UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng

Slides:



Advertisements
Apresentações semelhantes
JAVA Orientação a Objetos
Advertisements

Classes Abstratas e Interfaces
Modificadores Marco Antonio. Introdução Em todas as linguagens de programação o acesso a classes/métodos deve seguir algumas regras.
Herança, Polimorfismo e Classes Abstratas em Java
H ERANÇA E P OLIMORFISMO Prof. Thiago Pereira Rique
Java: Pacotes e Modificadores de Visibilidade
1 Orientação a Objetos: Herança Alcides Calsavara.
Java: Pacotes e Modificadores de Visibilidade
Herança, sobrecarga e ligação dinâmica zHerança zReferência super zSobrecarga de métodos zSobreposição zLigação dinâmica de métodos zfinal.
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Generalização, Especialização e Conceitos
Iniciação ao Java – Márcio F. Campos
Polimorfismo e Classes Abstratas Profa
Linguagem de Programação II
Wagner Santos C. de Jesus
Capítulo 9 Herança 1.
UMA ABORDAGEM SOBRE ORIENTAÇÃO A OBJETOS!
Herança e Polimorfismo
Herança P. O. O. Prof. Ângela e Grace.
CRIANDO OBJETOS EM JAVA
Introdução a programação (if669cc)
Programação Orientada a Objetos com Java
PLC – Introdução a POO Java
JAVA Orientação a Objetos
Linguagem de Programação II
Atributos, Encapsulamento e Interface em Java
Programação I Aula 2 (Métodos)
Herança em Java.
Classes, Objetos, Atributos e Métodos JAVA
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Classes Abstratas e Interfaces.
Professora Lucélia Oliveira
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng. da Computação IF62C - Fundamentos de Programação Semana 12 – Overloading X Overriding Prof.a.
Programação Orientada a Objetos: Reuso
Orientação a Objetos Parte I
POO - I Prof.: Jean Carlo Mendes
Curso de Aprendizado Industrial Desenvolvedor WEB
Wagner Santos C. de Jesus
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Aula prática 14 Orientação a Objetos – C++ Parte 2
Programação I Aula 6 (Herança, Polimorfismo e Encapsulamento)
Programação Orientada à Objetos
Prof. Gilberto Irajá Müller
Orientação a Objetos usando Java
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Java Kickstart, day 2 Semelhanças com linguagem C.
Classes Abstratas P. O. O. Prof. Ângela e Grace.
Aula Prática 4 Monitoria IP/CC (~if669).
Polimorfismo.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Interfaces POO Avançado.
Classes Abstratas e Interface
Herança e Arquitetura em camadas
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Herança Modelagem e Programação Orientada a Objetos
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Bruno Inojosa MCP .NET Framework
Atributos e Métodos Estáticos
Herança.
2 – Revisão de Programação Orientada a Objetos
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
Prof.: Bruno Rafael de Oliveira Rodrigues. Herança Possibilita a uma classe usar campos ou métodos definidos em outra classe. Assim a classe pai possui.
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Classes Abstratas e Interface. 2 Classe Abstrata  Uma classe abstrata serve apenas como modelo para uma classe concreta (classe que comumente usamos);
1 Interface (o termo) » Interface (a palavra reservada): Java estendeu o conceito de interfaces à um nível ainda mais flexível que permite construir entidades.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Transcrição da apresentação:

UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng. da Computação IF62C - Fundamentos de Programação Semana 10 – parte I: Herança Simples e Múltipla Prof.a Tânia Preto / Prof. Robinson Vida

Herança – Características (i/ ) Herança é um mecanismo da OO que permite criar novas classes a partir de classes já existentes, aproveitando-se das características já definidas na classe; Esta característica permite mecanismo o reuso e reaproveitamento de código existente, diminuindo o tamanho do código e tornando a programação mais eficiente; As novas classes são chamadas de classes derivadas (subclasses) e herdam as características da classes bases (superclasses); Uma subclasse pode herdar: Atributos, Métodos e Relacionamentos

Herança – Características (ii/ ) As subclasses são mais especializadas do que as suas superclasses que são mais genéricas. Dizemos também que a subclasse é uma extensão da superclasse; Razões para estender classes: alterar classes já existentes e adicionar propriedades ou comportamentos para representar outra classe de objetos; criar uma hierarquia de classes que “herdam” propriedades e comportamentos de outra classe e definem novas propriedades e comportamentos.

Herança – Características (iii/ ) Exemplo: As classes X1, X2 e X3 herdaram as características A e B da classe base (ou superclasse) X; Observa-se no exemplos que não foi necessário implementar novamente as características A e B para as novas classes, ou seja, essas características foram herdadas. As subclasse, , além de herdarem todas as características de seus supertipos, podem adicionar mais características tais como variáveis e/ou métodos adicionais, bem como reescrever métodos já existentes na superclasse (polimorfismo).

Herança – Características (iii/ ) Alterações feitas na superclasse afetam diretamente todas as classes descendentes; Termos como palavras classe base, supertipo, superclasse, classe pai e classe mãe são sinônimos, assim como palavras classe derivada, subtipo, subclasse e classe filha também são sinônimos; Herança simples X herança múltipla: Herança simples é quando uma classe só herda características de uma única classe mãe; Herança múltipla é quando uma classe herda características de mais de uma classe; Algumas linguagens permitem herança múltipla como C++, outras não permitem herança múltipla que é o caso do Java; Java contém um mecanismo para “aproximar” a herança múltipla que é o uso de interfaces.

Herança – Características (iv/ ) Exemplo de Herança simples usando UML: A classe VeículoTerrestre contém as subclasses Carro e Caminhão, que herdaram os Atributos Peso e Comprimento; A Classe Caminhão contém o Atributo Tonelagem próprio da Classe, herdando Peso e Comprimento; A Classe Carro não tem Atributo próprio, herdando Peso e Comprimento da classe VeículoTerrestre; Podemos entender que tanto Caminhão como Carros são uma espécie de VeículoTerrestre;

Herança – Características (iv/ ) Exemplo de Herança simples usando UML: A classe VeículoTerrestre contém as subclasses Carro e Caminhão, que herdaram os Atributos Peso e Comprimento; A Classe Caminhão contém o Atributo Tonelagem próprio da Classe, herdando Peso e Comprimento; A Classe Carro não tem Atributo próprio, herdando Peso e Comprimento da classe VeículoTerrestre; Podemos entender que tanto Caminhão como Carros são uma espécie de VeículoTerrestre;

Herança simples – Exemplo 1- JAVA class Funcionario { // super classe protect String nome, cpf; protect double salario; public void setNome(String nome){ this.nome = nome; } public String getNome( ){ return this.nome; public double getBonificação ( ) { return this.salario *0.10; } //idem para cpf e salario

Herança simples – Exemplo 1 Java- cont. class Gerente extends Funcionario { // subclasse int senha; int numFuncGerenciados; public void setSenha(int senha){ this.senha =senha; } public boolean autentica (int senha) { if (this.senha == senha) return true else return false;

Herança simples – Exemplo 2-C++ class Funcionario { // super classe public: void setNome(std::string nome); std::string getNome( ); protected: std::string nome; //protected: classe derivada pode acessar std::string cpf; double salario; double getBonificação ( ); }; void Funcionario::setNome(std::string _nome) { nome = _nome; } double getBonificação ( ) { return this.salario *0.10; } std::string Funcionario:: getNome( ) { return nome } //idem para cpf e salario

Herança simples – Exemplo 2 C++cont. class Gerente : public Funcionario { // gerente é subclasse private: int senha; public: int numFuncGerenciados; void setSenha(int senha); boolean autentica (int senha); }; void Gerente::setSenha(int _senha) { senha = _senha; } boolean Gerente::autentica (int _senha) { if (senha == _senha) return true else return false; }

Herança - Especificadores de Acesso Atributos e métodos privados são herdados, mas não podem ser acessados diretamente; Além dos especificadores public e private, existe um outro especificador relacionado ao conceito de herança: protected; protected: permite a visibilidade ao pacote e as subclasses de outros pacotes; funciona como private sob ponto de vista externo a classe; atributos protected são visíveis pelas classes derivadas, enquanto os private não o são;

Herança - Especificadores de Acesso – Exemplo C++

Herança – Flexibilidade Construtores: Os métodos herdados são usados exatamente como os não herdados; Java: Métodos construtores não são herdados, é necessário invocá-los usando super( ) ou this ( ); C++: Construtor default só é disponível se também for disponível na superclasse; Reescrita de Métodos: Um método herdado de uma classe pode ser reescrito (sobreescrito / override), alterando seu comportamento;

Herança – Reescrita de Métodos Um método herdado de uma classe pode ser reescrito (sobreescrito, sobreposto, override), alterando assim seu comportamento; As assinaturas (parâmetros) devem ser identicas;

Herança simples – Exemplo 2 Java class Gerente extends Funcionario { // subclasse com reescrita int senha; int numFuncGerenciados; public void setSenha(int senha) { this.senha =senha; } public boolean autentica (int senha) { if (this.senha == senha) return true else return false; public double getBonificação ( ) { // sobreescrevendo return this.salario *0.15;

Herança simples - Exemplo 2 Java- cont. Outra maneira de reescrever: public double getBonificação ( ) { // sobreescrevendo return super. getBonificação( ) + 1000; } class testaGerente { public static void main (String[] args) { Gerente gerente = new Gerente; gerente.setNome(“Chuck Berry”); gerente.setSalario(5000.0); System.out.println(gerente.getBonificacao); Teste o uso do método getBonificacao da classe pai e também a alteração acima;

Herança simples – Exemplo 2 C++ class Gerente : public Funcionario { // gerente é subclasse private: int senha; public: int numFuncGerenciados; void setSenha(int senha); boolean autentica (int senha); }; void Gerente::setSenha(int _senha) { senha = _senha; } double Gerente::getBonificação ( ) { return this.salario *0.15; } // sobreescrevendo o método da classe pai boolean Gerente::autentica (int _senha) { if (senha == _senha) return true else return false; }