Herança - Conceitos Básicos

Documentos relacionados
Herança - Conceitos Básicos

Programação Orientada a Objetos

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos

Linguagem de Programação III

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Linguagem de Programação. Diagrama de classes

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Python Orientação a Objetos. Introdução à Programação SI2

Programação Orientada a Objetos Flávio de Oliveira Silva 144

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa

Classe Abstrata e Interface

Conceitos de Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

C com introdução a OO

Modificadores de Acesso JAVA

Aula 7 POO 1 Herança. Profa. Elaine Faria UFU

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

Introdução à Programação. Encapsulamento e Herança

Programação Orientada a Objetos Relacionamentos entre classes

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Orientação a Objetos (OO)

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

Programação Java (nível intermediário) 4. Polimorfismo

Programação Orientada a Objetos

Linguagem de Programação II Herança

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Linguagem de Programação II Relacionamento entre classes

POO29004 Programação Orientada a Objetos

Linguagem de Programação I Apresentação da Disciplina

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça. Prática 02 Herança

Introdução ao Java. Prof. Herbert Rausch Fernandes

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Notas de Aula 04: Herança e polimorfismo.

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Diagrama de Classes. Régis Patrick Silva Simão. Régis Simão Diagrama de Classes 1/42

Herança e Propriedades

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

Laboratório de programação II

12/03/16. Generalização. Associação. Agregação UML Relações. entre Classes. Composição. Prof.Dr. Enzo Seraphim. Dependência

Orientação a Objetos AULA 06

9 Classes Abstractas e Interfaces

Java para Desktop. Programação Orientada à Objetos 2 JSE

Programação Orientada a Objetos

Lição 11 Herança, polimorfismo e interfaces

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Conceitos de Programação Orientada a Objetos

Programação Orientada a Objetos JAVA - NETBEANS

Introdução à UML. Prof. Jesus José de Oliveira Neto

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

PROGRAMAÇÃO I HERANÇA E POLIMORFISMO

UML. Diagrama de Classe

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

Análise Orientada a Objetos. Análise Orientada a Objetos; O Paradigma de Objetos; A UML.

Laboratório de programação II

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz

Banco de Dados Modelagem Conceitual de Dados. Prof. Edjandir Corrêa Costa

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

Computação II Orientação a Objetos

Aula 4 Encapsulamento e Relacionamento Cleverton Hentz

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo

Unidade: sobrecarga, construtores e herança

Linguagens de Programação Aula 12

Herança e Polimorfismo

Visibilidade e Encapsulamento

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

extendsé usado para indicar herança em JAVA

Programação Orientada a Objetos

Aula 2 Princípios Básicos da Orientação a Objetos (Parte II)

Programação Orienta a Objetos

Transcrição:

UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Herança - Conceitos Básicos! 1. Introdução!! Herança é a capacidade que instâncias de uma classe filha ou Subclasse de acessar dados e procedimentos ou métodos associados com uma Classe Parente ou Superclasse. Ou seja, uma Subclasse herdará todos os métodos e dados da Superclasse. Além disso, a Subclasse poderá definir métodos e dados, ou mesmo em alguns casos, redefinir alguns métodos da Superclasse.! A Herança é sempre transitiva. Ou seja, uma classe pode herdar aspectos de Superclasses que estão a muitos níveis de distância. Em outras palavras, uma classe Filha pode herdar métodos da classe Pai, classe Avô, classe Bisavô, classe Tataravô e assim sucessivamente.! Para identificar se duas classes têm o relacionamento de herança, basta utilizar o teste IS-A ou é-um(a). 2. Teste IS-A!! Se soar de bom grado dizer que o conceito A is a conceito B, então existe uma relação de herança entre A e B. São exemplos de conceitos que passam no teste IS-A : Carro é um Meio de Transporte Professor é uma Pessoa Aluno é uma Pessoa Pássaro é um Animal Gato é um Animal Lista de Alunos é uma Lista Triângulo é um Objeto Gráfico Quadrado é um Objeto Gráfico Cantor é um Músico Guitarrista é um Músico Músico é uma Pessoa

UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 2! Por outro lado, alguns relacionamentos são reprovados no teste IS-A. São alguns exemplos de relacionamentos que são reprovados no teste: Motor é um Carro Caixa de Edição é uma Janela Vídeo é uma Música Professor é uma Disciplina Livro é um Animal Livro é um Biblioteca 2. Por que utilizar Herança!! Duas motivações justificam o seu uso: Reuso de Código: Como a Subclasse herda os atributos e métodos da Superclasse, não há a necessidade de redigitar parte ou todo o código. Reuso de Conceitos: Isso ocorre quando a Subclasse redefine algum método da Superclasse. Apesar de não haver um reuso completo do código da Superclasse, a Subclasse e a Superclasse compartilham apenas a definição do método. 2. Representação UML!! A Representação no diagrama UML da relação de Herança entre classe é feita por meio de uma linha ligando as duas classes e um símbolo triângulo apontando para Superclasse. As Figuras 1 e 2, a seguir, exemplificam isso.

UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 3 Figura 1 - Exemplo UML de Representação de Herança entre as Subclasses Triângulo, Circulo e Quadrado com a Superclasse ObjetoGrafico Figura 2 - Exemplo UML de Representação de Herança de 2 níveis. (ps: o código da implementação desse exemplo encontra-se no site)! Na Figura 1, as Subclasses Triângulo, Quadrado e Circulo herdam todos os métodos e atributos da classe ObjetoGrafico. Esses atributos e métodos foram omitidos da representação. Na Figura 2, por sua vez, a classe Musician herda todos os atributos e métodos da classe Person. Além disso, a classe Musician adiciona novos atributos. Na Figura 2, a classe GuitarPlayer, herda tudo o que a classe Musician possui, ou seja, os atributos caimprovise, cancompose e playclassicalmusic estão disponíveis para a classe GuitarPlayer. Além disso, a classe GuitarPlayer também tem acesso aos atributos Name, Gender_Female e BirthDay por meio da herança entre a classe Musician e Person.! Destaca-se neste momento, que os relacionamento Associação e Dependência entre as classes continuam podendo ser empregados na definição do projeto.

UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 4! Por exemplo, um GuitarPlayer pode ter um 0..* Álbuns gravados formando a sua discografia e um Álbum pode ter sido gravado por 1..* GuitarPlayer. A Figura 3 ilustra isso. A classe Person, por sua vez, relaciona-se com a classe Address. Ou seja, uma instância da classe Person possui uma instância da classe Address. Figura 3 - Exemplo UML de Representação de Herança ou Genralização e Associação. 3. Herança na linguagem C++!! Na linguagem C++ a Herança é representada da seguinte forma: class SubClasse : <tipo de acesso> SuperClasse {... }! A informação do <tipo de acesso> pode ser: public, private ou protected. Cada um desses modificadores do tipo de acesso influencia em como os atributos e métodos da Superclasse serão herdados na Subclasse, a saber:

UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 5 public: todos os tipos de acesso dos atributos públicos, privados e protegidos da Superclasse ao serem herdados para a Subclasse, mantém os seus modificadores de acesso conforme foi definido na Superclasse. proteced: todos os atributos ou métodos que foram definidos como publicos na Superclasse serão Protegidos na Subclasse. Private: todos os atributos e métodos definidos na Superclasse serão privados na Subclasse.! Exemplos de Definição: class Triangulo : public ObjetoGrafico {... } class Quadrado: public ObjetoGrafico {... } class Circulo: public ObjetoGrafico {... } class Triangulo : protected ObjetoGrafico {... } class Quadrado: protected ObjetoGrafico {... } class Circulo: protected ObjetoGrafico {... } class Triangulo : private ObjetoGrafico {... } class Quadrado: private ObjetoGrafico {... } class Circulo: private ObjetoGrafico {... }! Não existe uma regra consagrada para identificar que tipo de acesso uma Subclasse terá em relação à Superclasse. Na dúvida, deixe acesso publico. Essa possibilidade de modificação do tipo de acesso definido na linguagem C++ não foi definido em outras linguagens tais como o Java. 4. Tarefa!! Implementar na linguagem C++ o diagrama da Figura 3.