Baixe o app para aproveitar ainda mais
Prévia do material em texto
Orientação a Objetos - Parte 1 - Saulo Cunha Campos FAGOC Classe • Uma classe é um tipo de modelo abstrato. Ou a estrutura que determinado objeto deve possuir. • As classes especificam quais características os objetos possuirão e quais comportamentos e tarefas eles devem exercer. • Exemplo: Carro, Cachorro, pessoa e etc Objeto • Objetos nada mais são do que instancias da classe, ou seja, uma cópia dessa classe em memória. • O objeto é um misto de dados e funções estruturado em uma mesma unidade. • Exemplo: Fiat Palio, cachorrinha Mel, Maria e etc Propriedades e métodos • Cada uma das características definidas na classe para o objeto são conhecidas como propriedades (ou atributos). • Cada uma das tarefas ou comportamentos definidos na classe para o objeto exercer são conhecidos como métodos. • De forma simplificado as propriedades são variáveis que armazenam as características dos objetos e os métodos as funções que os objetos poderão acessar. Abstração • É o processo de extrair características essenciais de um objeto do mundo real. É necessária para ter um modelo fiel da realidade. • Porém tais características essenciais dependem do projeto e da visão do projetista. • Dessa forma, abstração também é um exame seletivo de determinados aspectos do problema Abstração • Princípio de ignorar os aspectos de um assunto não relevantes para o propósito em questão, tornando possível uma concentração maior em assuntos que são julgados como principais. • Assim, em determinado problema alguns aspectos serão selecionados enquanto outros serão ignorados. • O fato é que isso depende do projetista. Abstração Abstração Defina a classe carro: Mensagens • É o paradigma utilizado para comunicação entre os objetos. • A independência de objetos é enfatizada através da troca de mensagens. • Os dados de um objeto não podem ser manipulados ou vistos por outro objeto, ao invés disso, uma mensagem é enviada ao objeto (encapsulamento). Mensagens • A mensagem especifica que um objeto A necessita utilizar um método do objeto B. • As mensagens, então, não dizem como um método deve ser executado, mas que, simplesmente, um método deve ser executado. Mensagem Encapsulamento • Encapsulamento é o ocultamento de informações e detalhes de implementação. • O intuito é proteger os dados armazenados por um objeto e simplificar o entendimento de suas funções. Encapsulamento A função do encapsulamento é: – Proteger os dados armazenados de um objeto contra corrupções – Esconder a complexidade da implementação, simplificando o entendimento das funções do objeto. • Assim o encapsulamento proíbe a visualização interna do objeto e a interface de cada classe é definida de forma a revelar o mínimo possível sobre o objeto. Encapsulamento Encapsulamento • Somente o próprio objeto pode ter acesso a seus atributos. • Ex.: Tocas fitas • Para que um objeto utilize informações armazenadas em outros, o acesso aos atributos são transferidos para métodos (serviços) que são conhecidos como “gettes” e “settes”. Encapsulamento Classe Triangulo Atributos: - Base - Altura Métodos: - GetBase - SetBase(valor) - GetAltura - SetAltura(valor) - CalcArea Encapsulamento 1. public class Triangulo { 2. // Atributos 3. private int Base; 4. private int altura; 5. 6. // Métodos 7. public int getBase() { return this.Base; } 8. public void setBase(int Base) { this.Base = Base; } 9. public int getAltura() { return this.altura; } 10. public void setAltura(int altura) {this.altura = altura; } 11. 12. public double calcArea(){ 13. return (this.Base * this.altura) / 2; 14. } 15. } Encapsulamento • Para manter o encapsulamento apenas métodos devem ser conhecidos por outros objetos. Porém existem alguns métodos que também devem ter suas visualizações restritas a própria classe. • Assim para cada atributo e método da classe devem ser especificadas quais são suas visualizações. Podendo ser: – Privado (private): Apenas visualização interna. Somente a própria a classe tem acesso. – Público (public): Conhecível a todos os objetos. Todos os outros objetos tem acesso a solicitar a execução. – Protegido (protected): Visualização disponível para a própria classe e para classes filhas. Encapsulamento Herança • Representa a estrutura Generalização e Especialização (Gen-Espec), tornando explícitos os atributos e serviços comuns em uma hierarquia de classes. Herança • Superclasses (classe PAI): representam abstrações generalizadas • Subclasses (classes FILHAS): representam abstrações onde variáveis de instância e métodos são adicionados, modificados ou removidos. • “Tudo que existe no pai também existe no filho” Herança Herança • Com o mecanismo de herança, ao se criar uma classe a partir de outra classe, a nova classe (subclasse da classe original) herda todas as suas características. • Assim os atributos e métodos definidos na super classe são compartilhados com a subclasse. Na subclasse é possível definir novos métodos e atributos. • Superclasses podem possuir serviços abstratos (virtuais), que devem ser implementados nas subclasses Herança • Dois tipos – Simples – Múltipla Herança • Herança simples: – Subclasse herda de apenas uma superclasse Herança • Herança múltipla: – Subclasse herda de mais de uma superclasse • Principal problema: conflito de nomes Herança • A implementação da herança em classes ocorre através da utilização da palavra chave “extends”. public class Aluno extends Pessoa { } Construtores • Toda classe possui um método responsável pela sua correta inicialização, esse método é chamado de construtor. • Em java, o método construtor possui o mesmo nome da classe e não tem retorno definido (nem mesmo void). Construtores • Nestes métodos devem ser realizadas inicialização de atributos, criação de objetos da classe, execução de rotinas iniciais, entre outras coisas. • O método construtor é disparado automaticamente no momento em que a classe é instanciada. Carro MeuCarro = new Carro(); Classes abstratas • Existem dois tipos de classes as classes: – Concretas: podem ser instanciadas – Abstratas: não podem ser instanciadas • As classes abstratas servem apenas para moldar (determinar) como devem ser as suas classes descendentes (mais especializadas). • Uma classe concreta pode descender de uma classe abstrata, mas deve manter a mesma estrutura definida nela. • A classe abstrata não possui implementações apenas declarações de métodos e atributos que as classes descendentes devem possuir. Classes abstratas • Além de classes abstratas podem existir métodos abstratos. • Caso um método seja definido como abstrato em uma classe pai, todas as classes (filhas) derivadas serão obrigadas a implementar tal método. • Nos métodos abstratos não possuem implementação de comportamento. As implementações terão que ser definidas (obrigatoriamente) nas classes descendentes. Polimorfismo • Polimorfismo: poli = várias, morphos = formas - “várias formas”. • Significa que uma mesma operação pode atuar de modos diferentes em classes diferentes, ou na mesma classe, de acordo com a situação. • Um lavajato possui a operação (método) lavar. Mas a maneira de lavar um carro é diferente da maneira de lavar uma moto ou uma bicicleta. Assim a mesma operação (lavar) pode ser executada de maneiras diferentes dependendo do tipo de objeto que será lavado. Polimorfismo • O polimorfismo de métodos pode ocorre de duasformas diferentes: – Sobrecarga – Sobreescrita (sobreposição) Polimorfismo - Sobrecarga • A sobrecarga ocorre quando uma mesma classe possui comportamentos diferentes para um mesmo serviço (método), como no exemplo do lavajato. • No caso da sobrecarga, o comportamento a ser adotado quando o método é invocado é definido pelos parâmetros passados. Polimorfismo - Sobrecarga 1. public class LavaJato { 2. public void Lavar(Bicicleta E){ 3. // Comportamento para lavagem da bicicleta 4. } 5. public void Lavar(Moto E){ 6. // Comportamento para lavagem da moto 7. } 8. public void Lavar(Carro E){ 9. // Comportamento para lavagem do carro 10. } 11. } 1. public class Main { 2. public static void main(String[] args) { 3. Moto MinhaMoto = new Moto(); 4. Carro MeuCarro = new Carro(); 5. 6. LavaJato jatao = new LavaJato(); 7. 8. jatao.Lavar(MinhaMoto); 9. jatao.Lavar(MeuCarro); 10. } 11. } Polimorfismo - Sobreescrita • A sobreescrita de métodos envolve herança. • Neste caso, ocorre a mudança do comportamento de uma ação, presente em uma determinada classe, sendo que tal ação tenha sido herdada de uma classe mais genérica. • Dessa forma, um comportamento definido em classe mais genérica pode ser mudado em classes mais especializadas. Polimorfismo - Sobreescrita 1. public class LavaJato { 2. public void Lavar(){ 3. System.out.println(“Lavando..."); 4. } 5. } 1. public class JavaJato_De_Motos extends LavaJato { 2. public void Lavar(){ 3. System.out.println("Estou lavando motos de um jeito só meu"); 4. } 5. }
Compartilhar