1. PROGRAMAÇÃO ORIENTADA A OBJETOS.pdf
Document Details
Uploaded by ManeuverableConsonance
Tags
Full Transcript
Programação Orientada a Objetos 1. Os 4 Pilares da Programação Orientada a Objetos Os 4 pilares da Orientação a Objetos Atualmente, o paradigma Orientado a Objetos é o mais difundido pelas linguagens de programação. E isso acontece por se tratar de um padrão que tem evoluído bastante, prin...
Programação Orientada a Objetos 1. Os 4 Pilares da Programação Orientada a Objetos Os 4 pilares da Orientação a Objetos Atualmente, o paradigma Orientado a Objetos é o mais difundido pelas linguagens de programação. E isso acontece por se tratar de um padrão que tem evoluído bastante, principalmente em questões voltadas para segurança e reaproveitamento de códigos. Para uma linguagem de programação ser considerada orientada a objetos, deve ter alguns requerimentos atendidos. São quatro pilares bastantes importantes: - Abstração - Encapsulamento - Herança - Polimorfismo 3 Abstração A abstração consiste em um dos pontos mais importantes dentro de qualquer linguagem Orientada a Objetos. Como estamos lidando com uma representação de um objeto real, temos que imaginar o que esse objeto irá realizar dentro de nosso sistema. São três pontos que devem ser levados em consideração nessa abstração. 1. O primeiro ponto é darmos uma identidade ao objeto que iremos criar Essa identidade deve ser única dentro do sistema para que não haja conflito. 2. A segunda parte diz respeito a características do objeto que o definem dentro da programação orientada a objetos. Essas características são nomeadas Propriedades. Por exemplo, as propriedades de um objeto 4 CACHORRO poderia ser RAÇA, TAMANHO, IDADE, entre outros. Abstração 3. Por fim, a terceira parte é definirmos as ações que o objeto irá executar. Essas ações são chamados Métodos. Esses métodos podem ser desde ACENDER para um objeto LÂMPADA, como também LATIR para um objeto CACHORRO. 5 Encapsulamento O encapsulamento se trata de um dos elementos que adicionam segurança à aplicação pelo fato de esconder as propriedades, criando uma espécie de caixa preta. A maior parte das linguagens orientadas a objetos implementam o encapsulamento baseado em propriedades privadas, ligadas a métodos especiais chamados getters e setters que irão retornar e setar o valor da propriedade, respectivamente. Essa técnica evita o acesso direto a propriedade do objeto, adicionando uma outra camada de segurança à aplicação. 6 Encapsulamento Para fazermos um paralelo com o que vemos no mundo real, podemos exemplificar quando clicamos no botão ligar da televisão, não sabemos o que está acontecendo internamente. Podemos então dizer que os métodos que ligam a televisão estão encapsulados. 7 Herança O reuso de código é uma das grandes vantagens da programação orientada a objetos. Muito disso se dá por uma questão que é conhecida como Herança. Essa característica otimiza a produção da aplicação em tempo e linhas de código. Para entendermos essa característica, vamos imaginar uma família. A criança, por exemplo, está herdando características de seus pais. Por sua vez, os pais herdam características do avós. O que faz com que a criança também herda essas características sucessivamente. O objeto abaixo na hierarquia irá herdar características de todos os objetos acima dele, de seus "Ancestrais". 8 Herança 9 Polimorfismo Objetos Filhos herdam herdam as características e ações de seus "Ancestrais" Entretanto, em alguns casos, é necessário que as ações para um mesmo método seja diferente. Em outras palavras, o polimorfismo consiste na alteração do funcionamento interno de um método herdado de um objeto pai. Como um exemplo, temos um objeto genérico “Eletrodoméstico". Esse objeto possui um método ou ação "Ligar". Temos dois objetos que herdam desse objeto, "Televisão" e "Geladeira", que ambos deverão ser ligados, porém, não serão ligados da mesma forma. Para cada Eletrodoméstico, deverá ser reescrito a ação de "Ligar". 10 Exercícios de Fixação 1º) Um dos conceitos básicos de orientação a objetos é o fato de um objeto, ao tentar acessar as propriedades de outro objeto, deve sempre fazê-lo por uso de métodos do objeto ao qual se deseja atribuir ou requisitar uma informação, mantendo ambos os objetos isolados. A essa propriedade da orientação a objetos se dá o nome de: a) herança. b) abstração. c) polimorfismo. d) mensagem. e) encapsulamento. 11 Exercícios de Fixação 2º) Uma técnica que consiste em separar aspectos externos dos internos da implementação de um objeto, isto é, determinados detalhes ficam ocultos aos demais objetos e dizem respeito apenas ao próprio objeto. Trata-se de: a) polimorfismo. b) generalização. c) encapsulamento. d) herança. e) visibilidade. 12 Exercícios de Fixação 3º) Um comando "abrir" ao provocar diferentes ações em objetos distintos, por exemplo: em uma caixa, porta ou janela, representa figurativamente na orientação a objetos o princípio denominado: a) persistência. b) polimorfismo. c) abstração. d) agregação. e) herança. 13 Exercícios de Fixação 4º) A proteção de atributos e operações das classes, fazendo com que estas se comuniquem com o meio externo por meio de suas interfaces, define o conceito de: a) polimorfismo. b) encapsulamento. c) herança. d) agregação. e) especialização. 14 Exercícios de Fixação 5º) Compartilhamento de atributos e operações genéricas entre diversas classes descendentes de uma classe ancestral remete ao conceito de: a) cardinalidade. b) encapsulamento. c) herança. d) agregação. e) multiplicidade. 15 2. Programação Orientada a Objetos Programação Orientada a Objetos Programação Orientada a Objeto ou POO é um modelo/paradigma de projeto e programação de software baseado na abstração digital do mundo real, através da composição e interação entre diversas unidades chamadas de Objetos. POO suporta várias linguagens de programação e vai além do desenvolvimento, sendo o ponto de partida de análises em geral. Conceitualmente falando, um objeto é um elemento que representa alguma entidade, quer seja abstrata quer seja concreta, da área de interesse do problema que está sendo analisado. Portanto, esse paradigma aproxima o mundo real do mundo virtual. 17 Programação Orientada a Objetos Mas o que é interessante entender é que para dar suporte à definição de “objetos” criou-se a definição de classes. Em síntese, a classe é um conjunto de objetos com características em comum. E é justamente a classe quem define o comportamento do objeto. E o comportamento, por sua vez, é definido por métodos (ação) e suas características são definidas através de atributos. Sendo assim, todos os conceitos da POO são baseados nesses dois iniciais: Classes e Objetos. 18 3. Classes e Objetos Classes e Objetos No Paradigma Orientado a Objetos, a ideia é olhar o mundo real como se tudo pudesse ser representado por Objetos. Objeto é a representação de qualquer coisa que você queira modelar em um programa. Como por exemplo, um carro, uma pessoa, um curso, um animal. Objetos são coisas e Classes é um agrupamento de coisas. 20 Classes e Objetos A Classe é a descrição das características e serviços comuns a um grupo de Objetos, logo podemos dizer que a Classe é um modelo a partir do qual objetos são construídos. Classes podem ser pensadas como “Templates” ou “Moldes” para objetos. Um objeto é uma ocorrência específica de uma Classe. 21 Classes e Objetos 22 Classes e Objetos 23 Classes e Objetos A Classe encapsula dados e abstrações necessários para descrever uma entidade do mundo real. A partir de uma Classe, podem ser gerados vários Objetos que dispõem das mesmas características e os mesmos comportamentos. Objeto é a instância de uma Classe. 24 Instanciação A partir da Classe podemos construir Objetos na memória do computador que está executando a aplicação. A este processo é chamado de instanciação. Instanciar é criar um objeto. Ou seja, alocar um espaço na memória para posteriormente poder utilizar as características (atributos) e os serviços (métodos) que o objeto dispõe. 25 Classes e Objetos 26 Recapitulando Podemos definir uma classe como: - Uma coleção de objetos que são descritos com os mesmos atributos e as mesmas operações. - Representa uma ideia ou conceito e classifica objetos que tenham propriedades similares. - Representam os blocos de construção mais importantes dos sistemas orientados a objetos, e devem possuir responsabilidades bem definidas dentro da aplicação. - As classes possuem atributos e métodos. 27 Recapitulando Podemos definir um objeto: - Uma ocorrência específica de uma classe. - É uma instância de classe. - Um objeto possui características próprias e executa determinadas ações. - As entidades abstraídas podem se comunicar entre si, por meio da troca de Mensagens. 28 4. Componentes de uma Classe Componentes de uma Classe Os componentes de uma Classe são: 1. Propriedades (Atributos) - Características pertencentes a todos os objetos da Classe. - Armazenam a informação sobre o estado do Objeto. 2. Operações (Métodos) - Funções ou serviços oferecidos pela Classe. - Métodos são usados para implementar o comportamento dos Objetos. 30 Atributos Consiste em uma informação de estado, para o qual cada objeto de uma classe tem seu próprio valor. Diferentes objetos de uma mesma classe não compartilham os atributos de objetos, cada um possui sua própria cópia do atributo. As Mensagens enviadas a um objeto podem mudar o valor de um ou mais atributos, alterando o estado de um objeto. Um atributo é um dado para o qual cada objeto tem seu próprio valor. Atributos são, basicamente, a estrutura de dados que vai representar a classe. 31 Atributos 32 Métodos Consistem em descrições das operações que um objeto executa quando recebe uma Mensagem. O próprio objeto deve realizar operações de consulta ou alteração dos valores de seus atributos. Os métodos também são utilizados para possibilitar interações entre os objetos de uma aplicação. 33 Classe 34 5. Componentes de um Objeto Componentes de um Objeto Os componentes de um Objeto são: 1. Identidade - Propriedade do Objeto que o distingue de outros objetos. 2. Estado - Reflete os valores correntes dos atributos em determinado momento. 3. Comportamento - Conjunto de atividades externamente observáveis do objeto. Como o objeto reage em termos de mudança de estado e troca de mensagens. 36 Objeto 37 Exercício de Fixação Selecione um objeto se baseando por elementos do mundo real. A partir deste objeto, identifique cinco atributos e três ações deste objeto. Responda as seguintes perguntas: 1. O que seria esse objeto e qual o nome que o melhor qualificaria? 2. Quais seriam os seus atributos? 3. Quais seriam os seus métodos? 38 6. Mensagens Mensagens Os objetos se comunicam a partir da troca de mensagens. Uma mensagem é um sinal enviado de um objeto a outro, o qual requisita um serviço, usando uma operação programada no objeto chamado. Por exemplo, para que um objeto execute um método, é necessário enviar a este objeto uma mensagem solicitando a execução do método desejado. Quando uma mensagem é recebida, uma operação é invocada no objeto chamado. As mensagens somente ocorrem entre objetos que possuem uma Associação. 40 Mensagens Imagine uma pessoa dirigindo um carro. Como poderíamos modelar essa ação para o mundo orientado a objetos? 41 Componentes de uma Mensagem 1. Objeto a quem a mensagem é endereçada. 2. Nome do método ou serviço que se deseja executar. 3. Parâmetros necessários ao método (se existirem). 42 Exercícios 1º) Um programa orientado ao objeto é composto de objetos que são módulos contendo atributos que determinam como os objetos atuarão. Certo Errado 43 Exercícios 2º) Na orientação a objetos, um objeto tipicamente possui estado e operações definidas O estado é representado por métodos e as operações associadas a atributos que fornecem serviços a outros objetos. Certo Errado 44 Exercícios 3º) Mensagens e métodos são de fato correlacionados, dado que as mensagens são os meios pelos quais os objetos interagem, e cada mensagem a um objeto ativa um comportamento desse objeto que é descrito no correspondente. Certo Errado 45 Exercícios 4º) As instâncias de uma classe são: a) seus atributos b) suas superclasses c) suas operações d) seus objetos e) seus relacionamentos 46 Exercícios 5º) Sobre orientação a objetos, considere I. Os valores dos atributos são definidos no nível de classe II. Os métodos são definidos no nível de objeto III. A invocação de uma operação é definida no nível de objeto Está correto o que se afirma em a) II e III, apenas b) I, II e III c) III, apenas d) I e II, apenas 47 e) I e III, apenas Exercícios 6º) Uma classe é uma descrição de um conjunto de objetos que compartilham os mesmos atributos, operações e relacionamentos. Certo Errado 48 Exercícios 7º) Os valores das propriedades de um objeto em um determinado instante, que podem mudar ao longo do tempo, representam: a) a instância de uma classe b) a identidade de um objeto c) o estado de um objeto d) o comportamento de um objeto e) as operações de uma classe 49 Exercícios 8º) O método utilizado para inicializar objetos de uma classe quando estes são criados é denominado: a) void b) interface c) agregação d) composição e) construtor 50 Exercícios 9º) O estado de um objeto é definido pelo conjunto de valores de suas propriedades Certo Errado 51 Exercícios 10º) Um sistema orientado a objetos é composto de objetos interativos que mantêm seu próprio estado local e oferecem operações nesse estado. Sistemas orientados a objetos são mais fáceis de mudar do que os sistemas desenvolvidos com abordagens funcionais. Registre V, para verdadeiras, e F, para falsas: (__) Processos de projeto orientado a objetos envolvem projetar as classes, os relacionamentos entre essas classes e os casos de uso definidos na etapa de refinamento de requisitos. (__) Herança e polimorfismo são recursos da programação orientada a objetos. (__) Especialização ocorre quando define-se uma ou mais subclasses a 52 partir de uma superclasse. Exercícios Práticos 1º) Crie um projeto de um sistema de Caixa Eletrônico. Neste projeto deverá ser projeto as Classes e seus respectivos atributos e métodos. 53 Exercícios Práticos 2º) Construa uma calculadora com os seguintes requisitos: - A calculadora terá apenas 4 operações básicas (soma, subtração, multiplicação e divisão). - A calculadora deverá realizar operações apenas entre dois fatores (números). - O usuário deve fornecer tanto os números quanto a operação que deve ser realizada. - Deve existir um método que faz o cálculo baseado no operador digitado pelo usuário. Você deverá construir uma forma de capturar parâmetros digitados pelo usuário na execução do programa. Por exemplo: 2 x 10. 54 Exercícios Práticos A seguir um rascunho de um diagrama de classes que você pode usar como base para resolver esse exercício. 55