Baixe o app para aproveitar ainda mais
Prévia do material em texto
HERANÇA Programação Orientada a Objeto em JAVA Prof. Alysson Ramirez Situação-problema da Aula 01: 2 Abstrair um problema é parte importante do processo de desenvolvimento de software, dessa forma, quanto mais próximo da realidade de um programador, que é um ser humano, o problema a ser resolvido possa ser representado, melhor será o seu entendimento e consequentemente, a implementação torna-se mais simples e inteligível para todos os envolvidos no processo de desenvolvimento, inclusive do cliente para o qual o programa está sendo desenvolvido. Vamos analisar a seguinte situação: Um programador é contratado para desenvolver um software para uma empresa de produtos de beleza, e o software em questão possui vários módulos, como: Responsável pelo Recursos Humanos da Empresa; Controle de estoque; Controle de marketing; Controle da frota de caminhões. Situação-problema da Aula 01: 3 Todos esses módulos funcionam como peças de um todo, mesmo sendo independentes; sendo assim, diversos programadores poderiam trabalhar de forma independente em cada um dos módulos. Além disso, seria possível adquirir módulos prontos sem ao menos conhecer a implementação deles, utilizando apenas interfaces de comunicação. Quais as vantagens você enxerga nesse tipo de abordagem em relação ao paradigma estruturado? Levante questões em relação ao tempo de desenvolvimento, custos, reuso entre outras que achar pertinente. Atividade verificadora de aprendizagem: Identifiquem as classes e atributos para cada uma das situações citadas abaixo: A) Em uma turma de um curso de graduação temos disciplinas ministradas em salas diferentes. B) A transportadora "Super Cometa" monitora seus caminhões e motoristas através de um controlador embutido. Por meio dele é possível saber a localização de cada veículo. Atividade Autônoma Aura: 1) O paradigma de programação orientada a objetos nasceu da necessidade de trazer o entendimento de problemas computacionais para mais próximo do mundo real. Levando em consideração os conceitos de programação orientada a objetos, julgue os itens a seguir: I - Classes e objetos possuem atributos e métodos, no entanto, uma classe é apenas um modelo que é usado para criar objetos diferentes do mesmo tipo. II - Os atributos de um objeto são o que ele sabe fazer e o métodos são o que ele sabe. III - Uma classe é capaz de armazenar estados através de seus atributos e reagir a mensagens enviadas a ela, assim como se relacionar e enviar mensagens a outras classes. Está(ão) correta(s): A) I D) II e III B) I e II E) III C) I, II e III Atividade Autônoma Aura: 2) Os paradigmas de orientação a objeto e estruturado tem aplicações diversas na computação pois apresentam características distintas que os tornam adequados a aplicações específicas. Por exemplo, para desenvolver um programa para uma empresa de Recursos Humanos que irá ajudar a selecionar candidatos para um perfil de vaga específico e será modificado e atualizado constantemente, o paradigma mais adequado seria o orientando a objetos, mas se você irá desenvolver um software para o controle do freio ABS de um automóvel, o qual irá executar em um microcontrolador que possui diversas restrições de memória e processamento, seria mais adequado a utilização do paradigma estruturado. Diante dessas duas situações motivadoras e de seus conhecimentos em relação aos paradigmas orientado a objetos e estruturado, relacione as características com os respectivos paradigmas. I - Orientado a objetos II - Estruturado ( ) Reutilização de código ( ) Tratamento de dados misturados com o comportamento do programa ( ) utiliza um conjunto de procedimentos para resolver um problema ( ) representação de problemas de forma abstrata A) I, I, II, II D) I,I,II,I B) II,I,II,I E) I, II, I, II C) II,II,I,II Situação-problema da Aula 02: 7 Sistemas computacionais muitas vezes acabam reutilizando componentes em vários pontos do programa. Por exemplo, interfaces gráficas utilizam muitos botões, os quais possuem atributos e características muito parecidas, como forma retangular, método de execução quando clicado entre outros. Supondo que em um ambiente específico seja necessário utilizar um botão de formar circular para representar o botão de um elevador. Notamos que todos os outros comportamentos e atributos do botão "retangular" serão utilizadas pelo botão "circular". Então, não seria interessante que o botão "circular" herdasse as características do botão "retangular" realizando apenas as alterações necessárias ou acréscimo de atributos e métodos? Esse mecanismo traria que tipos de vantagens no desenvolvimento de sistemas? HERANÇA • É uma forma de reutilização de software na qual uma nova classe é criada, absorvendo membros de uma classe existente e aprimorada com capacidades novas ou modificadas. • Permite enconomia de tempo no desenvolvimento de programas, reutilizando software de alta qualidade, testado e depurado HERANÇA • SUPERCLASSE: CANETA OU PESSOA • Quando uma nova classe herda MEMBROS de uma classe existente • SUBCLASSE: CANETA AZUL / VERMELHA ALUNO / PROFESSOR CALOURO / VETERANO OU AUX / ADJ • Nova classe criada com herança de MEMBROS • Uma subclasse pode se tornar uma superclasse para outras subclasses HERANÇA • SUBCLASSE: • Tem seus próprios métodos e classes • É mais específica que a superclasse • Representa um grupo mais ESPECIALIZADO de objetos • Possui comportamentos da SUPERCLASSE mais os adicionais específicos a ela HERANÇA • SUPERCLASSE DIRETA: • É a superclasse a partir da qual a subclasse herda explicitamente • SUPERCLASSE INDIRETA: • Qualquer superclasse acima da classe direta na HIERARQUIA DE CLASSE • HIERARQUIA DE CLASSE: • Define os relacionamentos de herança entre as classes HERANÇA • HIERARQUIA DE CLASSE: • Inicia com a classe OBJECT (pacote java.lang) • TODA classe JAVA EXTENDS (“herda de”) direta ou indiretamente a classe OBJECT! • HIERARQUIA SIMPLES: • Uma classe é derivada de uma superclasse direta • JAVA NÃO SUPORTA HERANÇA MULTIPLA HERANÇA • HERANÇA MULTIPLA: • Ocorre quando uma classe é derivada de mais de uma superclasse direta • RELACIONAMENTO É UM: • Representa a herança • Um objeto de uma subclasse também pode ser tratrado como um objeto da sua superclasse • Exemplo: um carro É UM veículo HERANÇA • RELACIONAMENTO TEM UM: • Representa a composição • Um objeto contém uma ou mais referências de objeto como membros • Exemplo: • um carro TEM UMA direção • um objeto carro TEM UMA referência a um objeto direção SUPERCLASSES E SUBCLASSES • Um objeto de uma classe frequentemente também É UM objeto de outra classe • EXEMPLO: • Um retangulo É UM quadrilátero • Um quadrado É UM quadrilátero • Um paralelogramo É UM quadrilátero • Um trapezóide É UM quadrilátero SUPERCLASSES E SUBCLASSES • Um retangulo HERDA DE um quadrilátero • Quadrilatero é uma SUPERCLASSE • Retangulo é uma SUBCLASSE • Um retangulo é um tipo específico de quadrilatero • MAS um quadrilatero NÃO É UM retangulo • Um quadrilatero PODER SER: • Um paralelogramo • Um quadrado • Etc SUPERCLASSES E SUBCLASSES • Superclasses são mais gerais • Subclasses são mais específicas • Cada objeto de SUBCLASSE é um objeto de sua SUPERCLASSE • Uma SUPERCLASSE pode ter várias SUBLCLASSES • Exemplo: • Uma superclasse VEÍCULO representa todos os veículos • Uma subclasse CARRO representa um subconjunto de veículo menor e mais específico SUPERCLASSES E SUBCLASSES • Relacionamentos de herança formam estruturas hierarquicas do tipo ARVORE • Há situações em que uma classe pode ser ao mesmo tempo uma subclasse e também uma superclasse • HIERARQUIA DE CLASSE = HIERARQUIA DE HERANÇA SUPERCLASSES E SUBCLASSES • EXEMPLO: SUPERCLASSES E SUBCLASSES • EXEMPLO: DIRETAINDIRETA INDIRETA SUPERCLASSES E SUBCLASSES • EXEMPLO: • A leitura do diagrama é feita da seguinte forma: de baixo para cima, seguindo as setas: • Um Administrador é um membro do Corpo Docente• Um Professor é um membro do Corpo Docente • Um Corpo Docente é um membro de Empregado SUPERCLASSES E SUBCLASSES • EXEMPLO: • Um Funcionário é membro de Empregado • Um Empregado é membro da comunidade • Um Aluno é membro da comunidade • Um Graduado é membro da comunidade • Membro da Comunidade é a superclasse direta de Empregado, Aluno e Graduados SUPERCLASSES E SUBCLASSES • EXEMPLO: • Membro da Comunidade é a superclasse indireta de todas as outras subclasses no diagrama • Um administrador é um membro do corpo docente que é um membro de empregado que é um membro da comunidade SUPERCLASSES E SUBCLASSES • EXEMPLO: SUPERCLASSES E SUBCLASSES • Nem todo relacionamento de classe é um relacionamento de herança • Relacionamento TEM UM: • As classes têm membros que são referencias a objetos de outras classes • Criam classes compondo classes existentes SUPERCLASSES E SUBCLASSES • EXEMPLO: • Classe empregado • Classe dataDeNascimento • Classe numeroDeTelefone • Um empregado é uma dataDeNascimento????? • Um empregado TEM UMA dataDeNascimento! • Um empregado é um numeroDeTelefone? • Um empregado TEM UM numeroDeTelefone! SUPERCLASSES E SUBCLASSES • Importante: • Objetos de superclasse não podem ser tratados como objetos de suas subclasses • Exemplo: • Todos os carros são veículos, mas nem todos os veículos são carros SUPERCLASSES E SUBCLASSES • Desvantagem da herança: • Uma subclasse pode herdar métodos que ela não necessita ou que não deveria ter • Às vezes a subclasse precisa de uma versão personalizada do método • SOBRESCREVER: • A subclasse pode redefinir o método da superclasse com uma implementação mais adequada para ela (@OVERRIDE) Herança ◼ É a capacidade de se definir novas classes com base em classes já existentes; ◼ Permite ao programador criar uma nova classe programando apenas as diferenças entre a nova classe e a classe anterior (classe-pai); ◼ A herança pode ser: Simples: atributos e métodos herdados de uma única classe; Múltipla: atributos e métodos herdados de várias classes. 29 Herança 30 Polimorfismo 31 ◼ É a propriedade de usar o mesmo nome para métodos diferentes, implementados em níveis diferentes de uma hierarquia de classes; ◼ Permite que métodos herdados por uma classe sejam alterados (sobrescritos) para adaptar-se a peculiaridades próprias da classe derivada. Polimorfismo 32 ◼ Tipos clássicos de polimorfismo: De operadores: distinção pelo tipo de operandos, por exemplo soma de inteiros ou soma de reais; Redefinição de operadores: criar operações não embutidas na linguagem, por exemplo a soma de matrizes; Dois métodos iguais na mesma classe: distinção pelo número e/ou tipo dos parâmetros. EXEMPLO 1 package br.com.exemploheranca; public class pessoa { String nome, idade, endereco = "R: Java ,501"; public void ImprimeNome() { System.out.println("o nome é:"); System.out.println("Endereco: " + endereco); } } EXEMPLO 1 package br.com.exemploheranca; public class fornecedor extends pessoa{ String cnpj; public void ImprimeNome() { do fornecedor é :System.out.println("O nome " + nome + "\n Cnpj: " + cnpj); } } EXEMPLO 1 package br.com.exemploheranca; public class cliente extends pessoa { String cpf; public void ImprimeNome() { System.out.println("Nome do nome + "\n Nº CPF: " + cpf + "\n Seu endereco cliente é : " + :" + endereco); } } EXEMPLO 1 package br.com.exemploheranca; public class principal { public static void main(String[] args) { cliente c = new cliente(); c.nome = "Luiz"; c.cpf = "073.777.796-21"; c.ImprimeNome(); fornecedor f = new fornecedor(); f.nome = "Deltatronic"; f.cnpj = "073.856.9856.52-10"; f.ImprimeNome(); } } EXERCÍCIOS • Desenhe uma hierarquia alunos universitários. de herança Utilize ALUNO superclasse então para como herde ALUNO com da hierarquia, as classes ALUNODEGRADUAÇÃO ALUNOGRADUADO. Continue e a estender a hierarquia o mais profundo que conseguir (vários níveis). Depois de desenhar a os relacionamentosdiscuta classes. hierarquia, entre as classes e crie um Em seguida, programa crie as Java que demonstre sua utilização. EXERCÍCIOS • Desenhe uma hierarquia de herança para QUADRILATERIO, TRAPEZIO, PARALELOGRAMO, RETANGULO e QUADRADO. Utilize QUADRILATERO como a superclasse da Faça a hierarquia (com muitos níveis). Especifique hierarquia. conseguir variáveis de instância classe. As variáveis e os métodos para de instância private o mais profundo que as cada de QUADRILATERO devem ser os pares x e y de coordenadas para os quatro Pontos que delimitam o QUADRILATERO. Escreva um programa em Java que instancia os objetos de suas classes e gera saída da área de cada objeto – menos o QUADRILATERO. Situação-problema da Aula 03: 39 Um programador foi contratado para desenvolver um bloco de notas que deve funcionar da seguinte forma: o usuário pode criar um conjunto de objetos notas que possui os seguintes atributos: nome, data de criação e informação. Nesse caso, verificamos que o Bloco de Notas é composto por um agrupamento de várias notas. Como podemos organizar esse agrupamento? Existe apenas uma forma de agrupá-los?
Compartilhar