Prévia do material em texto
PROGRAMAÇÃO ORIENTADA A OBJETOS: POO OBJETIVO Aproximar o mundo digital do mundo real. 2 COMO ERA? 3 QUEM CRIOU ? 4 Alan Kay OBJETOS ? 5 DEFINIÇÃO: OBJETOS Um objeto é um elemento que representa, no domínio da solução, alguma entidade (abstrata ou concreta) do domínio de interesse do problema sob análise. 6 CLASSES Uma classe é um gabarito para a definição de objetos. Através da definição de uma classe, descreve-se que propriedades — ou atributos — o objeto terá 7 Pessoa Id nome endereco cidade Apresentar() Atributos Métodos MODIFICADORES DE ACESSO Os modificadores de acesso são padrões de visibilidade de acessos às classes, atributos e métodos. Esses modificadores são palavras-chaves reservadas pelo Java, ou seja, palavras reservadas não podem ser usadas como nome de métodos, classes ou atributos. 8 TIPOS DE MODIFICADORES DE ACESSO Public: Uma declaração com o modificador public pode ser acessada de qualquer lugar e por qualquer entidade que possa visualizar a classe a que ela pertence. Private: Os membros da classe definidos não podem ser acessados ou usados por nenhuma outra classe. Esse modificador não se aplica às classes, somente para seus métodos e atributos. Esses atributos e métodos também não podem ser visualizados pelas classes herdadas. Protected: O modificador protected torna o membro acessível às classes do mesmo pacote ou através de herança, seus membros herdados não são acessíveis a outras classes fora do pacote em que foram declarados. default (padrão): A classe e/ou seus membros são acessíveis somente por classes do mesmo pacote, na sua declaração não é definido nenhum tipo de modificador, sendo este identificado pelo compilador. 9 ABSTRAÇÃO Faz-se uso deste conceito ao abstrair as coisas do mundo real e pegar somente o que for relevante para sua classe. Por exemplo, se eu quisesse fazer uma aplicação para manipular e armazenar dados de um carro para um estacionamento, eu deveria pegar os dados relevantes dos carros- clientes, como: Número da placa, cor, modelo, ano. 10 ENCAPSULAMENTO Encapsulação é o princípio de projeto pelo qual cada componente de um programa deve agregar toda a informação relevante para sua manipulação como uma unidade (uma cápsula). Aliado ao conceito de ocultamento de informação, é um poderoso mecanismo da programação orientada a objetos. 11 INTERFACE A interface é um recurso muito utilizado em Java, bem como na maioria das linguagens orientadas a objeto, para “obrigar” a um determinado grupo de classes a ter métodos ou propriedades em comum para existir em um determinado contexto, contudo os métodos podem ser implementados em cada classe de uma maneira diferente. Pode-se dizer, a grosso modo, que uma interface é um contrato que quando assumido por uma classe deve ser implementado. 12 HERANÇA Herança é o nome atribuído ao direito ou condição de herdar, ganhar, obter ou conquistar algo por via de sucessão; ou seja, transmitido de alguém para alguém. 13 HERANÇA: ORIENTAÇÃO A OBJETOS Herança, em Java, nada mais é do que criar classes a partir de outra já existente. As classes “filhas” vão herdar as características de sua superclasse. Herança é um mecanismo que permite que características comuns a diversas classes sejam fatoradas em uma classe base, ou superclasse. A partir de uma classe base, outras classes podem ser especificadas. Cada classe derivada ou subclasse apresenta as características (estrutura e métodos) da classe base e acrescenta a elas o que for definido de particularidade para ela. 14 REPRESENTAÇÃO: HERANÇA Pessoa Id nome endereco cidade 15 Pessoa Física cpf rg Pessoa Jurídica cnpj ie TIPOS DE HERANÇA Extensão: a subclasse estende a superclasse, acrescentando novos membros (atributos e/ou métodos. Especificação: a superclasse especifica o que uma subclasse deve oferecer, mas não implementa nenhuma funcionalidade. Diz-se que apenas a interface (conjunto de especificação dos métodos públicos) da superclasse é herdada pela subclasse. Combinação de extensão e especificação: a subclasse herda a interface e uma implementação padrão métodos da superclasse. A subclasse pode então redefinir métodos para especializar o comportamento em relação ao que é oferecido pela superclasse, ou ter que oferecer alguma implementação para métodos que a superclasse tenha declarado mas não implementado. Normalmente, este tipo de relacionamento é denominado herança polimórfica. 16 POLIMORFISMO Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse. Esse mecanismo é fundamental na programação orientada a objetos, permitindo definir funcionalidades que operem genericamente com objetos, abstraindo-se de seus detalhes particulares quando esses não forem necessários. 17 EXEMPLO 18 Pessoa Id nome endereco cidade Apresentar( ) Pessoa Física cpf rg Apresentar() Pessoa Jurídica cnpj ie Apresentar() “Olá eu sou um Humano” “Olá eu sou uma Empresa” OVERLOAD (SOBRECARGA) A sobrecarga de métodos consiste em você declarar vários métodos em uma única classe ou em classes descendentes, com o mesmo nome, porém eles tem que ter assinaturas diferentes. A assinatura do método é o escopo do método identificado pelo seu retorno, pelo seu nome, bem como o recebimento ou não de seus parâmetros 19 OVERRIDE (SOBRESCRITA) A sobrescrita somente é possível em classes herdadas, isto porque este conceito significa o que o próprio nome já diz, ou seja, substituir um método da super classe na sub classe sobrescrevendo-o (substituindo-o) o mesmo. 20 EXERCÍCIOS 1. Qual o principal objetivo da orientação a objetos? 2. Em POO, o que são objetos ? 3. Qual a função das Classes em POO? 4. Qual o conceito de abstração ? 5. Para que serve o encapsulamento de informações ? 6. O que são interfaces ? 7. O que são as heranças em POO ? 8. Qual a diferença entre Overload e Override? 21 REVISÃO Orientação a objetos; Objetos; Classes; Modificadores de acesso, public, private, default e protected; Encapsulamento; Herança; Polimorfismo, sobrescrita e sobrecarga; 22 REFERÊNCIAS RICARTE, Ivan L. M. Programação orientada a objetos: Uma abordagem com Java, 2001. Disponível em: http://www.dca.fee.unicamp.br/cursos/PooJava/Aul as/poojava.pdf Acesso em: 21 mar. 2017. 23