Programação Orientada a Objetos (DPADF 0063)



Documentos relacionados
Herança. Algoritmos e Programação II. Aula 5 Herança

Análise e Projeto Orientados por Objetos

Técnicas de Programação II

Programação por Objectos. Java

Capítulo 8. Introdução UML

Programação por Objectos. Java

Aula 3 Objeto atual com referencia THIS e Classes com Herança

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Programação Orientada a Objetos (DPADF 0063)

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

1. Herança. Sobrescrevem métodos - redefinem métodos herdados. Subclasse herda de uma superclasse

Programação Orientada a Objetos em Java

Orientação a Objetos e a Linguagem Java

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Encapsulamento de Dados

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

Análise de Programação

Linguagem de Programação III

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Java Threads. Introdução

Prof. Jhonatan Fernando

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

Módulo 07 Características Avançadas de Classes

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

UML: Diagrama de Casos de Uso, Diagrama de Classes

Programação Orientada a Objetos

Tópicos da Aula. Classes e Objetos. Classe Pública em Java. Classes em Java. Assinatura de Métodos. Corpo de Classes e Métodos. Conceitos de classe

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

Programação de Computadores - I. Profª Beatriz Profº Israel

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Implementando uma Classe e Criando Objetos a partir dela

Herança. Alberto Costa Neto DComp - UFS

Computação II Orientação a Objetos

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

Linguagem de Programação III Herança

FUNDAMENTOS DA ORIENTAÇÃO A OBJETOS- REVISÃO

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Linguagem de Programação I. Orientação a Objetos em Java

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

POO Programação Orientada a Objetos. Classes em Java

Reuso com Herança a e Composiçã

LINGUAGEM ORIENTADA A OBJETOS

Java 2 Standard Edition Como criar classes e objetos

Capítulo 5 Reuso de Classes

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

Algoritmos e Programação II. Sobrecarga

Módulo 06 Desenho de Classes

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

2ª Lista de Exercícios Orientação a Objetos

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos. Encapsulamento

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Classes Abstratas e Interfaces

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Capítulo 4. Packages e interfaces

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objeto

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

Capítulo 3. Programação por objectos em Java

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Programação Orientada a Objetos C++

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

Orientação a Objetos. Conceitos Iniciais Introdução a Linguagem Java. Gil Eduardo de Andrade

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Sistemas Operacionais. Prof. André Y. Kusumoto

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

3 Classes e instanciação de objectos (em Java)

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Java. Marcio de Carvalho Victorino

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br

insfcanceof new public switch transient while byte continue extends for int null

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

HERANÇA. Prog. Orientada a Objetos em Java

Programas eram lineares e com poucos módulos (Programação estruturada) Aumento da complexidade dos sistemas e difícil reusabilidade dos mesmos

UML Aspectos de projetos em Diagramas de classes

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

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

Profº. Enrique Pimentel Leite de Oliveira

UNIVERSIDADE FEDERAL DO PARANÁ

Orientação a Objetos com Java

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Orientação a Objetos. Thiago Messias Evangelista UESC Universidade Estadual de Santa Cruz Version LibreOffice Productivity Suite

Desenvolvimento de Aplicações para Internet Aula 7

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

NetBeans. Conhecendo um pouco da IDE

Classes, Superclasses e Subclasses

Transcrição:

Programação Orientada a Objetos (DPADF 0063) Aula 5 Herança Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

Reutilização de software

Herança Mecanismo de reutilização de software onde uma nova classe é criada absorvendo membros de uma classe existente e aprimorada com capacidades novas ou modificadas; Permite que elementos mais específicos incorporem a estrutura e o comportamento de elementos mais genéricos;

Herança (cont.) Frequentemente um objeto de uma determinada classe também é um objeto de outra classe. Este tipo de relação normalmente é hierarquizada... Forma Forma2D Forma3D Circulo Quadrado Triangulo Esfera Cubo Pirâmide

Herança (cont.) Humanos naturalmente pensam dessa forma... MembroDaComunidadeAcademica Empregado Aluno Ex-Aluno Docente TécnicoAdministrativo AlunoDeGraduacao AlunoDePosGraduacao Administrador Professor

Superclasses x Subclasses Quando especificamos uma classe, ao invés de começar do zero, declarando atributos e métodos que talvez já existam em outra classe podemos designar a nova classe a herdar o comportamento e as ações de uma classe já existente; A classe existente é chamada de superclasse e a nova classe de subclasse.

Superclasses x Subclasses (cont.) Superclasse tendem a ser mais gerais enquanto que subclasses, mais específicas; Toda subclasse pode vir a tornar-se uma superclasse para futuras subclasses; A superclasse direta é aquela a partir do qual a subclasse herda explicitamente, uma superclasse indireta é qualquer superclasse acima da classe direta na hierarquia de classes. Forma Forma3D Esfera Superclasse direta de Forma3D e superclasse indireta de Esfera Subclasse de Forma e superclasse direta de Forma3D Subclasse de Esfera

Herança em em Java... class Forma3D extends Forma{ A palavra reservada extends indica que a classe a ser especificada herda de uma outra classe; Na linguagem Java a hierarquia de classes inicia com a classe Object (do pacote java.lang), sendo assim toda classe Java é descendente em algum grau da classe Object. Uma sub-classe tem acesso aos atributos e métodos definidos com visibilidade public e protected, mas não private.

Herança em Java... (cont.) class ItemCompra extends java.lang.object { private float preco; private String descricao; public ItemCompra(float p, String descr) {... public void setpreco(float novopreco) {... public float getpreco() {... public void setdescricao(string d) {... public String getdescricao() {... class Filme extends ItemCompra { private int midia; Neste caso a herança é opcional (pode ficar implícita) public Filme(String descr, int midia) {... public String getdescricaomidia() {... public static boolean midiaehvalida (int m) {... public int getmidia() {... ItemCompra - preco - descricao + setpreco() + getpreco() + setdescricao() + getdescricao() - midia Filme + getdescricaomidia() + midiaehvalida() + getmidia()

Herança x Composição é um x contém um A composição é uma outra forma de reaproveitarmos classes (também é conhecido por delegação); Consiste em criar novas classes incluindo nelas atributos da classe que se quer reaproveitar. Para que os métodos da classe base possam ser executados, escrevemos métodos correspondentes na classe nova que chama os da classe base, delegando a execução dos métodos...

Herança x Composição (cont.) A classe DataHora contém na sua relação de atributos uma instância de uma classe Hora e outra instância da classe Data. class DataHora { private Data dta; private Hora hra; public DataHora() { dta = new Data(); hra = new Hora(); //Demais métodos e atributos

Sobrescrevendo Métodos Modificação de um método da superclasse na subclasse; Toda vez que um método que já existe na superclasse é redeclarado na subclasse ele oculta o método da superclasse; Qual getbarulho() será executado?

Referência super Permite às subclasses acessarem métodos das superclasses; A palavra reservada super é similar a this, porém atua como referência para o objeto corrente interpretado como uma instância da superclasse; Construtores da superclasse são chamados simplesmente pela palavra super (seguida de eventuais argumentos), demais métodos da superclasse são chamados pela palavra super seguida do sinal de ponto e o nome do método. Construtores de superclasses só podem ser chamados a partir de construtores de subclasses, e devem obrigatoriamente ser a primeira linha; Somente métodos da superclasse imediata podem ser acessados.

Referência super (cont.) class Animal { private String nome; public void fazerbarulho() { System.out.println( Este é o barulho do animal... ); //Demais métodos e atributos class Gato extends Animal{ private int numfiosdebigode; public void fazerbarulho() { super.fazerbarulho(); System.out.println( Este é o barulho do gato... ); //Demais métodos e atributos

Métodos construtores nas subclasses O construtor de uma subclasse sempre chama o construtor de sua superclasse, mesmo que a chamada não seja explícita. Se a chamada não for explícita (através da palavra-chave super) o construtor da subclasse tentará chamar o construtor vazio (sem argumentos) da superclasse e se ele não estiver definido, ocorrerá um erro de compilação; Se uma classe não possui um construtor vazio (sem argumentos) e possui um construtor com argumentos, as classes herdeiras deverão obrigatoriamente chamar o construtor com argumentos da classe ancestral (este é um tipo de erro que geralmente causa muita confusão).

Herança Múltipla Situação onde uma subclasse possui mais de uma superclasse; A linguagem Java não oferece suporte para herança múltipla; A alternativa para utilizar os benefícios da herança múltipla em Java é a utilização de interfaces; Carro Barco interface Carro { public void puxarfreiodemao(); interface Barco { public void jogarancora(); class VeiculoAnfibio implements Carro, Barco { VeículoAnfíbio public void VeiculoAnfibio(Carro carro, Barco barco ) {... public void puxarfreiodemao() {... public void jogarancora() {...

Exercícios para fixação

Organizando a bagunça Considere as pessoas presentes em um ambiente universitário... e desenhe uma possível hierarquia de classes para representá-la Alunos de graduação; Alunos de pós-graduação; Bolsistas; Técnicos administrativos; Coordenadores de curso; Docentes; Pesquisadores;