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; }

Linguagem de Programação. Diagrama de classes

Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos

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

Herança Tiago Eugenio de Melo

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

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

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

Programação Orientada a Objetos Relacionamentos entre classes

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

Linguagem de Programação III

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

Conceitos de Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos

Classe Abstrata e Interface

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

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

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

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

C com introdução a OO

Orientação a Objetos (OO)

Auto-Referenciamento e Herança

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

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

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

Herança e Propriedades

Modificadores de Acesso JAVA

Linguagem de Programação II Herança

Programação Orientada a Objetos JAVA - NETBEANS


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

Programação I Curso: Sistemas de Informação. Prof.: José Ronaldo Leles Júnior .:

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo

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

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

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

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

Notas de Aula 04: Herança e polimorfismo.

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

Diagrama de Classes. Conceitos Básicos. prof. Robinson Vida Monday, April 20, 15

Conceitos de Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

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

Introdução a UML. Uma agregação em UML é representada por ligando os retângulos que representam as classes envolvidas. Casa -cor -tamanho

INF1012 MODELAGEM DE DADOS

Programação com Objectos 1º Teste Tipo 1º Semestre (90 minutos)

Herança Sendo uma linguagem orientada a objetos Java oferece mecanismos para definir classes derivadas a partir de classes existentes; As classes deri

Herança e Polimorfismo - Parte II -

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

Orientação a Objetos AULA 06

Modelagem de Processos

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

Laboratório de programação II

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

Herança e Polimorfismo -Parte II -

Linguagem de Programação II Relacionamento entre classes

Projeto Banco de Dados

Laboratório de programação II

Introdução a UML. Uma associação em UML é representada por uma linha ligando os retângulos que representam as classes envolvidas.

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

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

Linguagens de Programação Aula 12

Orientação a objetos. Objetos ou Instâncias I

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

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

UML. Diagrama de Classe

Engenharia de Software. Prof. Me. Clodoaldo Brasilino

Unidade: sobrecarga, construtores e herança

INTRODUÇÃO A POO. Programação Orientada a Objetos Flávio de Oliveira Silva 6. PROCEDIMENTAL (Algorítmica)

Modelo Conceitual. Análise e Projeto de Sistemas Avançados. Aula 5. Allan Rodrigo Leite

Diagramas de Classes. ESII Profª. Andressa Falcade URI Santiago

Programação Orientada a Objetos

1-Para atender as necessidades de informação de uma biblioteca universitária foi

Programação Orientada a Objetos

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

PROGRAMAÇÃO I HERANÇA E POLIMORFISMO

COMPORTAMENTOS - Observações

Diagrama de Classes (Análise de casos de uso)

Diagrama de Classes (Análise de casos de uso) Prof. Cesar Augusto Tacla

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

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

UML. Diagrama de Classes

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

Programação Orientada a Objetos

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

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

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

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

GEE051 - Banco de Dados Projeto de BD Projeto Conceitual. Ilmério Reis da Silva UFU/FACOM /2

9 Classes Abstractas e Interfaces

Orientação a Objetos. Leonardo Gresta Paulino Murta.

Banco de Dados I Generalização/Especialização

Transcrição:

DAELN!! 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 novos métodos e dados ou, 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). 1 of 10

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!! 2 of 10

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, na maioria das situações: 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 3 of 10

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. Figura 1 - Exemplo UML de Representação de Herança entre as Subclasses Triângulo, Circulo e Quadrado com a Superclasse ObjetoGrafico! 4 of 10

Figura 2 - Exemplo UML de Representação de Herança de 2 níveis. 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, 5 of 10

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. 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 pode possuir no máximo uma instância da classe Address. A classe Address, por sua vez, pode estar relacionada com nenhuma instância da classe Person ou com várias. Ou seja, uma pessoa pode ter um endereço 6 of 10

associado a ela e em um endereço pode fazer referência a várias pessoas. Figura 3 - Exemplo UML de Representação de Herança ou Generalização e Associação.! 7 of 10

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:!! 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.! 8 of 10

!! 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 {... }! Observação Importante:!!! 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 9 of 10

! 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. 10 of 10