Tipos genéricos (cont)

Tamanho: px
Começar a partir da página:

Download "Tipos genéricos (cont)"

Transcrição

1 Tipos geéricos (cot) Bruce Eckel, Thikig i Java, 4th editio, PreticeHall, New Jersey, cf. Gilad Bracha, Geerics i the Java Programmig Laguage a.k.a The Geerics Tutorial, Julho de 2004 cf. jvo@ualg.pt José Valete de Oliveira 18-1 Sumário Noções chave Defiição e utilização de tipos geéricos Hierarquias de subtipos Tipos com limites Especificação UML Métodos geéricos Desevolvimeto de tipos geéricos: O quicksort revisitado Rasura Polimorfismo revisitado jvo@ualg.pt José Valete de Oliveira

2 Utilização de tipos geéricos Os tipos geéricos podem ser usados a declaração de:. Atributos;. Variáveis locais;. Parâmetros de métodos;. Tipos de retoro (de métodos). jvo@ualg.pt José Valete de Oliveira 18-3 Especificação de tipos geéricos em UML public class Stack <T> { ArrayList<T> items; public void push(t item) { // public T pop() { // 2

3 Métodos geéricos iterface Collectio<E> exteds Iterable<E> { <T>T[] toarray(t[] a); // public class MyCollectio<E> implemets Collectio<E> { //... public <T> T[] toarray(t[] a) { it i = 0; for(e elemet: this) a[i++] = elemet; retur a; jvo@ualg.pt José Valete de Oliveira 18-5 Utilizado o método geérico toarray Collectio<Iteger> ci = ew MyCollectio<Iteger>(); ci.add(1); Object[] ao = ew Object[ci.size()]; ao = ci.toarray(ao); jvo@ualg.pt José Valete de Oliveira

4 Istaciação, exemplos de public class Tst { public <T> T bypass(t obj) {retur obj; public void caller() { Strig s1 = abc"; Strig s2 = this.<strig>bypass(s1); Strig s3 = bypass(s1); // T -> Strig Object o1 = bypass(s1); // T -> Strig Object o2 = bypass((object) s1); // T -> Object Strig s4 = bypass((object) s1); // ERROR! Strig s5 = (Strig) bypass((object) s1); // OK agai Desevolvimeto de tipos geéricos jvo@ualg.pt José Valete de Oliveira

5 class Poit class Poit { private it x, y; public Poit(it ax, it ay) { class Poit { x=ax; private double x, y; y=ay; public Poit(double ax, double ay) { x=ax; public it getx() { retur x; y=ay; public it gety() { retur y; public double getx() { retur x; public double dist(poit p) { public double gety() { retur y; it dx = x p.getx(); it dy = y p.gety(); public double dist(poit p) { retur Math.sqrt(dx*dx+dy*dy); double dx = x p.getx(); double dy = y p.gety(); retur Math.sqrt(dx*dx+dy*dy); O que ós gostaríamos: Poit<Iteger> origi = ew Poit<Iteger>(0, 0); Poit<Double> pd = ew Poit<Double>(1.3, 2.4); jvo@ualg.pt José Valete de Oliveira

6 class Poit class Poit { private it x, y; public Poit(it ax, it ay) { class Poit { x=ax; private double x, y; y=ay; public Poit(double ax, double ay) { x=ax; public it getx() { retur x; y=ay; public it gety() { retur y; public double getx() { retur x; public double dist(poit p) { public double gety() { retur y; it dx = x p.getx(); it dy = y p.gety(); public double dist(poit p) { retur Math.sqrt(dx*dx+dy*dy); double dx = x p.getx(); double dy = y p.gety(); retur Math.sqrt(dx*dx+dy*dy); class Poit como um tipo geérico class Poit<T exteds Number> { private T x, y; public Poit(T ax, T ay) { x=ax; y=ay; public T getx() { retur x; public T gety() { retur y; 6

7 class Poit como um tipo geérico public double dist(poit<? exteds Number> p) { double dx = getx().doublevalue()- p.getx().doublevalue(); double dy = gety().doublevalue()- p.gety().doublevalue(); retur public Strig tostrig() { retur x+ "@" + y; Usado potos geéricos public static void mai(strig[] args) { Poit<Iteger> origi = ew Poit<Iteger>(0,0); Poit<Double> pd = ew Poit<Double> (1.1, 2.5); System.out.pritl(origi + ".dist("+pd+"): "+ origi.dist(pd)); 7

8 Recallig quicksort José Valete de Oliveira uchecked ) abstract class Quicksort { private Comparable[] data; /** pré-geerics **/ iterface Comparable { it compareto(object o); public fial void quicksort(comparable[] d) { data = d; quicksort(0, data.legth-1); /** quicksort method as the template method */ private fial void quicksort(it left, it right) { if (right <= left) retur; it i = partitio(left, right); quicksort(left, i-1); quicksort(i+1, right); jvo@ualg.pt José Valete de Oliveira

9 O que gostaríamos public class Mai { public static void mai(strig[] args) { List<Fractio> lst = ew ArrayList<Fractio>(); lst.add(ew Fractio(1, 7)); lst.add(ew Fractio(5, 2)); lst.add(ew Fractio(1, 2)); GQuicksort<Fractio> qs = ew ProbQuickSort<Fractio>(); qs.quicksort(lst); for(fractio f: lst) System.out.pritl (f); jvo@ualg.pt José Valete de Oliveira O quicksort revisitado public abstract class GQuicksort<T exteds Comparable<T>> { private List<T> data; public fial void quicksort(list<t> d) { data = d; quicksort(0, data.size()-1); private fial void quicksort(it left, it right) { if (right <= left) retur; it i = partitio(left, right); quicksort(left, i-1); quicksort(i+1, right); jvo@ualg.pt José Valete de Oliveira

10 Ateriormete /** Call this i a subclass for swapig elemets i ad j */ protected fial void exchage(it i, it j) { Comparable tmp = data[i]; data[i] = data[j]; data[j] = tmp; /** Use this i subclasses to compare elemets x.compareto(y) aswer 0 if x ==y; -1 if x < y; 1 se x>y */ protected fial boolea less(it i, it j) { retur (data[i].compareto(data[j]) < 0); jvo@ualg.pt José Valete de Oliveira O quicksort revisitado protected fial void exchage(iti, itj) { T tmp = data.get(i); data.set(i, data.get(j)); data.set(j, tmp); protected fial boolea less(it i, itj) { T di = data.get(i); T dj = data.get(j); retur (di.compareto(dj) < 0); jvo@ualg.pt José Valete de Oliveira

11 Ates class ProbQuickSort exteds Quicksort protected it partitio(it left, it right) { it last=left; it pp = left + (it) (Math.radom() * (right-left)); // pivot positio exchage(left, pp); for(it i=left+1; i <= right; i++) if (less(i, left)) exchage(i, ++last); exchage(left, last); retur last; jvo@ualg.pt José Valete de Oliveira O quicksort revisitado class GProbQuickort<T extedscomparable<t>> exteds GQuicksort<T> { protected it partitio(itleft, it right) { it last=left; it pp = left + (it) (Math.radom() * (right-left)); // pivot positio exchage(left, pp); for(it i=left+1; i <= right; i++) if (less(i, left)) exchage(i, ++last); exchage(left, last); retur last; jvo@ualg.pt José Valete de Oliveira

12 Será que podemos usar esta classe atiga /** a pre-geerics versio */ class Fractio implemets Comparable { private it um, de; // public it compareto (Object o) { // /** pré-geerics **/ iterface Comparable { it compareto(objecto); jvo@ualg.pt José Valete de Oliveira este cliete? public class Mai { public static void mai(strig[] args) { List<Fractio> lst = ew ArrayList<Fractio>(); lst.add(ew Fractio(1, 7)); lst.add(ew Fractio(5, 2)); lst.add(ew Fractio(1, 2)); GQuicksort<Fractio> qs = ew ProbQuickSort<Fractio>(); qs.quicksort(lst); for(fractio f: lst) System.out.pritl (f); jvo@ualg.pt José Valete de Oliveira

13 Vejamos public abstract class GQuicksort<T exteds Comparable<T>> { private List<T> data; // protected fial boolea less(it i, it j) { T di = data.get(i); T dj = data.get(j); retur (di.compareto(dj) < 0); jvo@ualg.pt José Valete de Oliveira Relembremos /** pré-geerics **/ iterface Comparable { it compareto(object o); /** actualmete **/ iterface Comparable<T> { it compareto(t t); jvo@ualg.pt José Valete de Oliveira

14 Relembremos /** a pre-geerics versio */ class Fractio implemets Comparable { private it um, de; // public it compareto (Object o) { // jvo@ualg.pt José Valete de Oliveira e se fizermos estas alterações? public abstract classgquicksort<t exteds Comparable<? super T>> { private List<T> data; // class GProbQuickort<T exteds Comparable<? super T>> exteds GQuicksort<T> { // jvo@ualg.pt José Valete de Oliveira

15 Ode estamos? Noções chave Defiição e utilização de tipos geéricos Hierarquias de subtipos Tipos com limites Especificação UML Métodos geéricos Desevolvimeto de tipos geéricos: O quicksort revisitado Rasura Polimorfismo revisitado jvo@ualg.pt José Valete de Oliveira

Tipos genéricos (cont)

Tipos genéricos (cont) Tipos genéricos (cont) Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 Gilad Bracha, Generics in the Java Programming Language a.k.a The Generics

Leia mais

Streams II. Overview. The notion of stream Java I/O stream hierarchy Files, and file access using streams Serialization

Streams II. Overview. The notion of stream Java I/O stream hierarchy Files, and file access using streams Serialization Streams II Bruce Eckel, Thikig i Java, 4th editio, PreticeHall, New Jersey, cf. http://midview.et/books/tij4 jvo@ualg.pt José Valete de Oliveira 16-1 Overview The otio of stream Java I/O stream hierarchy

Leia mais

Java Collections Framework III

Java Collections Framework III Java Collectios Framework III Bruce Eckel, Thikig i Java, 4th editio, PreticeHall, New Jersey, cf. http://midview.et/books/tij4 Gilad Bracha, Geerics i the Java Programmig Laguage a.k.a The Geerics Tutorial,

Leia mais

Bruce Eckel, Thinking in Patterns with Java, cf. José Valente de Oliveira 13-1

Bruce Eckel, Thinking in Patterns with Java, cf.  José Valente de Oliveira 13-1 Nested Classes II Erich Gamma, Richard Helm, Ralph Johso, Joh Vlissides, Desig Patters Elemets of Reusable Object- Orieted Software, Addiso-Wesley, 1995, AKA GoF Bruce Eckel, Thikig i Patters with Java,

Leia mais

TrabalhadorEstudante te(123, Ana, Faro, feminino, 100.0, 22); Estudante e=te; //ok Estudante *pe = &te; //ok Estudante &se = te; //ok

TrabalhadorEstudante te(123, Ana, Faro, feminino, 100.0, 22); Estudante e=te; //ok Estudante *pe = &te; //ok Estudante &se = te; //ok $ % & ' ( ) * * * +, -. / 0 1 2 / 1 34 5 637 38 9 1 / 4 : 3/ 0 9 0 ; < 39 1 = / 7 69 1 1 / 1 >?@ A?@ B o / 4 + C C D E < - F 2 / 1. 30 8 < 9 3 1 G = / 18< 3 =, 0 / 1. 30 8 < 9 3 1 G H = / - 8 3 I 37 9

Leia mais

Errors and exceptions

Errors and exceptions Errors ad exceptios Bruce Eckel, Thikig i Java, 4th editio, PreticeHall, New Jersey, cf. http://midview.et/books/tij4 José Valete de Oliveira 14-1 Overview Itrodução Testes e Testes uitários Noção de Exceção

Leia mais

Herança e passagem de parâmetro AULA 09

Herança e passagem de parâmetro AULA 09 Itrodução a Programação IF669 http://www.ci.ufpe.br/~if669 Heraça e passagem de parâmetro AULA 09 Ricardo Massa F. Lima rmfl@ci.ufpe.br Sérgio C. B. Soares scbs@ci.ufpe.br Itrodução Imagie que temos uma

Leia mais

Interfaces POO. Prof. Marcio Delamaro

Interfaces POO. Prof. Marcio Delamaro Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática 6 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

Java Collections Framework II

Java Collections Framework II Java Collections Framework II Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 Gilad Bracha, Generics in the Java Programming Language a.k.a The

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

Programação Orientada a Objetos com Java. Prof. Júlio Machado

Programação Orientada a Objetos com Java. Prof. Júlio Machado Programação Orientada a Objetos com Java Prof. Júlio Machado julio.machado@pucrs.br HERANÇA Herança Herança é uma relação de generalização/especialização entre classes A ideia central de herança é que

Leia mais

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

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,Pa Palavra reservada this Em Java podemos ter um parâmetro de um método e um atributo de uma classe com o mesmo nome. Caso façamos uma referência a esta variável, pelo princípio da localidade estaremos referenciando

Leia mais

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO HERANÇA A sintaxe de herança a para C++ e para Java são diferentes. Além m disso, em C++ é possível construir herança a múltipla...

Leia mais

Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4. jvo@ualg.pt José Valente de Oliveira 16-1

Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4. jvo@ualg.pt José Valente de Oliveira 16-1 Streams III Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 jvo@ualg.pt José Valente de Oliveira 16-1 Previously: Serializing a collection public

Leia mais

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

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos

Leia mais

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

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos

Leia mais

Herança e Polimorfismo

Herança e Polimorfismo Herança e Polimorfismo 2013 O que veremos hoje? Herança e polimorfismo Transparências baseadas no material do Prof. Gilbert Azevedo e Prof. Jailton Carlos Objetivos Conceito de Polimorfismo em POO Mais

Leia mais

TIPOS PARAMETRIZADOS CLASSES GENÉRICAS PARTE II

TIPOS PARAMETRIZADOS CLASSES GENÉRICAS PARTE II TIPOS PARAMETRIZADOS CLASSES GENÉRICAS PARTE II JAVA5 Tiger JAVA6 - Mustang ARQUITECTURAS DE SOFTWARE F. Mário Martins 2011 1 CRIAÇÃO DE CLASSES GENÉRICAS ARQUITECTURAS DE SOFTWARE F. Mário Martins 2011

Leia mais

Classe Abstrata e Interface

Classe Abstrata e Interface Orientação a objetos com Java Classe Abstrata e Interface Byron Leite byron.leite@gmail.com 1 Herança Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public

Leia mais

Profa. Thienne Johnson EACH/USP

Profa. Thienne Johnson EACH/USP Profa. Thienne Johnson EACH/USP Declarando classes usando generics Métodos que usam um parâmetro de tipo como tipo de retorno Declaração da classe BasicGeneric: class BasicGeneric Contém o parâmetro

Leia mais

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

Lição 11 Herança, polimorfismo e interfaces Lição 11 Herança, polimorfismo e interfaces 1 Objetivos Ao final da lição, o estudante deverá estar apto a: Definir superclasses e subclasses Criar Override de métodos de superclasses Criar métodos e classes

Leia mais

INTERFACES DE JAVA. O JCF é uma arquitectura que se baseia em três entidades fundamentais:

INTERFACES DE JAVA. O JCF é uma arquitectura que se baseia em três entidades fundamentais: INTERFACES DE JAVA O JCF é uma arquitectura que se baseia em três entidades fundamentais: a) Interfaces; b) Classes abstractas; c) Classes Concretas Implementações; Interfaces e Comparator 1 Interfaces

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Subtipagem e Coringas Lista é subtipo de Lista para qualquer T Não podemos chamar métodos em Lista

Leia mais

Programação com genéricos

Programação com genéricos Programação com genéricos Laboratório de Programação Pedro Vasconcelos, DCC/FCUP Fevereiro 2015 Tipos genéricos tipos genéricos permitem definir classes ou interfaces que são parameterizadas por outras

Leia mais

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

Java para Desktop. Programação Orientada à Objetos 2 JSE Java para Desktop Programação Orientada à Objetos 2 JSE Encapsulamento significa "ocultar informações, ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona

Leia mais

Rafael B. Pereira (http://www.rbper.com)

Rafael B. Pereira (http://www.rbper.com) Nesse caso a cláusula this() serve para chamar o construtor da própria classe. Agora vamos supor que fosse desejado chamar um construtor da classe pai. Como isso poderia ser feito? Bastaria usar a cláusula

Leia mais

Orientação a Objetos e a Linguagem Java

Orientação a Objetos e a Linguagem Java Orientação a Objetos e a Linguagem Java Afrânio Assis afranio@gmail.com Novembro/2006 1 Reutilizição com Herança e Composição Novembro/2006 2 Introdução Separar as partes que podem mudar das partes que

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse

Leia mais

Orientação a Objetos - Herança

Orientação a Objetos - Herança Orientação a Objetos - Herança 1 Repetindo Código p Todo banco tem funcionário. A classe funcionario ficaria da seguinte forma; class Funcionario { String nome; String cpf; double salario; // métodos devem

Leia mais

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

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; } Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos

Leia mais

Herança; Sobrescrita, Sobrecarga e Polimorfismo; Classes abstratas e concretas (finais).

Herança; Sobrescrita, Sobrecarga e Polimorfismo; Classes abstratas e concretas (finais). Disciplina: Programação Orientada à Objetos AULA 08 Herança; Sobrescrita, Sobrecarga e Polimorfismo; Classes abstratas e concretas (finais). Corpo docente: MsC. Alexandro Vladno Edmilson Campos MsC. Fábio

Leia mais

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

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz LÓGICA DE PROGRAMAÇÃO (JAVA) Definição A herança é um princípio da POO que permite a criação de novas classes a partir de outras previamente criadas. Essas novas classes são chamadas de subclasses, ou

Leia mais

Binding and Casting. Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf.

Binding and Casting. Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. Binding and Casting Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 Binding Intuitively, binding occours whenever a correspondence is stabilished

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS HEAP BINÁRIA

ESTRUTURAS DE DADOS E ALGORITMOS HEAP BINÁRIA ESTRUTURAS DE DADOS E ALGORITMOS 1 HEAP BINÁRIA Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande HEAP BINÁRIA É uma árvore binária satisfazendo duas propriedades:

Leia mais

final class UltimosDiasMeses{ static final int[] DIAS_DO_MES = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; }

final class UltimosDiasMeses{ static final int[] DIAS_DO_MES = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; } Fundação CECIERJ - Vice Presidência de Educação Superior a Distância Curso de Tecnologia em Sistemas de Computação Disciplina: Programação Orientada a Objetos AP1 1 semestre de 2017. Nome Assinatura Observações:

Leia mais

Fig.1 Estrutura de definição de instâncias típica de uma classe.

Fig.1 Estrutura de definição de instâncias típica de uma classe. FICHA PRÁTICA 3 SÍNTESE TEÓRICA LABORATÓRIO DE CLASSES I Nas linguagens de PPO os objectos são divididos em duas grandes categorias de entidades: as INSTÂNCIAS (objectos computacionais puros) e as CLASSES

Leia mais

Técnicas de Programação Avançada TCC Prof.: Anselmo Montenegro Conteúdo: Polimorfismo

Técnicas de Programação Avançada TCC Prof.: Anselmo Montenegro  Conteúdo: Polimorfismo Técnicas de Programação Avançada TCC- 00.174 Prof.: Anselmo Montenegro www.ic.uff.br/~anselmo anselmo@ic.uff.br Conteúdo: Polimorfismo Revisão... A classe provê a estrutura para a construção de objetos

Leia mais

Métodos Genéricos. Prof.: Michele Nasu Tomiyama Bucci

Métodos Genéricos. Prof.: Michele Nasu Tomiyama Bucci Métodos Genéricos Prof.: Michele Nasu Tomiyama Bucci Introdução Métodos genéricos e classes genéricas (e interfaces) permitem especificar, com uma única declaração de método, um conjunto de métodos relacionados

Leia mais

Aula 24 Programação Modular, POO e Padrões de Projeto

Aula 24 Programação Modular, POO e Padrões de Projeto Aula 24 Programação Modular, POO e Padrões de Projeto Alessandro Garcia LES/DI/PUC-Rio Junho 2010 Diferenças entre... Módulos (em C) e Classes (Linguagens OO) Classes possuem um operador de instanciação

Leia mais

[Desenvolvimento OO com Java] Classes abstratas e interfaces

[Desenvolvimento OO com Java] Classes abstratas e interfaces Centro Tecnológico Departamento de Informática Prof. Vítor E. Silva Souza http://www.inf.ufes.br/~vitorsouza [Desenvolvimento OO com Java] Classes abstratas e interfaces Este obra está licenciada com uma

Leia mais

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... } Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 7 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

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

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes - Programação Java - Herança, Classes Abstratas e Interfaces - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes

Leia mais

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços

Leia mais

Fontes Bibliográficas. Estruturas de Dados Aula 14: Recursão. Introdução. Introdução (cont.)

Fontes Bibliográficas. Estruturas de Dados Aula 14: Recursão. Introdução. Introdução (cont.) Fotes Bibliográficas Estruturas de Dados Aula 14: Recursão Livros: Projeto de Algoritmos (Nivio Ziviai): Capítulo 2; Estruturas de Dados e seus Algoritmos (Szwarefiter, et. al): Capítulo 1; Algorithms

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa é transferido

Leia mais

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão e Objetos em Java Algoritmos e Programação I Aula 9 Profa. Márcia Cristina Moraes mmoraes@inf.pucrs.br Profa. Sílvia M. W. Moraes silvia@inf.pucrs.br Prof. Marcelo H. Yamaguti yamaguti@inf.pucrs.br Prof.

Leia mais

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA 2º Teste 2012/2013 1º Semestre 201301171830 1/7 2º Teste 2012/2013 1º Semestre 17 de Janeiro de 2013, 11:30 (120 minutos) Nome: Número: Primeira Parte (7 valores) PERGUNTA NOTA 1.1.1 1.1.2 1.1.3 1.2 1.3

Leia mais

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Herança. Prof. Fernando V. Paulovich  23 de agosto de 2010 Herança SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade

Leia mais

Tipos abstratos de dados (TADs)

Tipos abstratos de dados (TADs) Tipos abstratos de dados (TADs) Um TAD é uma abstração de uma estrutura de dados Um TAD especifica: Dados armazeados Operações sobre os dados Codições de erros associadas à opers Exemplo: TAD que modela

Leia mais

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes. JAVA ENCAPSULAMENTO Na linguagem de programação Java, a classe é o alicerce para o encapsulamento, o qual é definido como uma técnica que faz com que os atributos da classe permaneçam ocultos, pois desta

Leia mais

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA Programação com Objectos 1/7 201302041830 120 minutos 2013/02/04 18:30 120 minutos Nome: Número: Primeira Parte (7 valores) PERGUNTA NOTA 1.1 1.2 1.3 1.4 Segunda Parte (3 valores) PERGUNTA RESPOSTA 2.1

Leia mais

Interfaces e Classes Internas

Interfaces e Classes Internas e Classes Internas SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade

Leia mais

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

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){

Leia mais

Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa

Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Conteúdo Noções elementares de extensão de classes Exemplo: classe

Leia mais

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. 6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável - O controlo da execução do programa

Leia mais

Polimorfismo. O que é polimorfismo?

Polimorfismo. O que é polimorfismo? O que é polimorfismo? Polimorfismo Significa que variáveis podem referenciar mais do que um tipo. Não é um conceito novo e várias linguagens de programação aplicam. Funções são polimórficas quando seus

Leia mais

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

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas Herança e Polimorfismo Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Revisando -Herança Estrutura Hierárquica e modular Projeção de classes genéricas que podem ser especializadas

Leia mais

Nome: Número: Primeira Parte (7 valores) Segunda Parte (3 valores)

Nome: Número: Primeira Parte (7 valores) Segunda Parte (3 valores) Nome: Número: Programação com Objectos 10 de Novembro de 2015, 08:00 (90 minutos) Primeira Parte (7 valores) Segunda Parte (3 valores) PERGUNTA NOTA PERGUNTA RESPOSTA 1.1 2.1 1.2 2.2 1.3 1.4 2.3 2.4 2.5

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa

Leia mais

Nome do Aluno: Matrícula: Turma: Data: 08/04/2013

Nome do Aluno: Matrícula: Turma: Data: 08/04/2013 Nome do Aluno: Matrícula: Turma: Data: 08/04/2013 1. (Encapsulamento) Dado o código abaixo diga quais os métodos que são visíveis para a instância objy criada pelo comando y objy = new objy() no método

Leia mais

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27 1. Defina os sequintes termos: (a) (1 Ponto) Polimorfismo Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27 (b) (1 Ponto) Sobrescrita de funções (c) (1 Ponto) Sobrecarga

Leia mais

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos Programação Orientada a Objetos: Herança Alexandre César Muniz de Oliveira Análise e Projeto Orientados a Objetos A análise orientada a objetos Determina o que o sistema deve fazer: Quais os atores envolvidos?

Leia mais

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes - Programação Java - Herança e Polimorfismo - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes relacionadas entre

Leia mais

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel) Herança capacidade de uma classe (subclasse) herdar, adquirir atributos e funcionalidades de outra classe (superclasse), podendo juntar algumas especificidades e/ou alterar outras. Existe uma relação tipo

Leia mais

Ordenação. Insertion Sort

Ordenação. Insertion Sort Sumário por trocas de vizinhos. Análise. Limites teóricos Insertion sort. Shellsort recursiva: Mergesort. Análise. Com heap binário: Heapsort. Análise. Divisão e conquista: Quicksort. Análise. Limites

Leia mais

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos) Mecanismos de controlo de acesso Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a cada classe e cada membro da classe (dados e métodos) Modificadores de acesso: public protected private

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos mleal@inf.puc-rio.br 1 Histórico O conceito de Classe foi introduzido na década de 60 através da LP Simula 67. A primeira LP OO pura foi Smalltalk desenvolvida durante a

Leia mais

LEIC-A / MEIC-A 2007/2008 (1º

LEIC-A / MEIC-A 2007/2008 (1º 1/11 LEIC-A / MEIC-A 2007/2008 (1º Semestre) Teste de Repescagem (versão A) 02 de Fevereiro de 2008, 09:00 (120 minutos) Nome: Primeira Parte (5 valores) PERGUNTA RESPOSTA 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8

Leia mais

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno. Interfaces Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Interfaces É utilizada para agrupar conceitos em

Leia mais

Desenvolvimento OO com Java Classes abstratas e interfaces

Desenvolvimento OO com Java Classes abstratas e interfaces Desenvolvimento OO com Java Classes abstratas e interfaces Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal

Leia mais

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno. Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Possibilita o reuso de classes (código-fonte) Usar quando:

Leia mais

5 Reuso de Classes. Desenvolvimento OO com Java. Vítor E. Silva Souza

5 Reuso de Classes. Desenvolvimento OO com Java. Vítor E. Silva Souza Desenvolvimento OO com Java 5 Reuso de Classes Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do

Leia mais

Algoritmos e Estruturas de Dados 1

Algoritmos e Estruturas de Dados 1 1. Algoritmos e Estruturas de Dados 1 Época Normal - 21 Janeiro 2005 public class Data private int dia, mes, ano; public Data(int d, int m, int dia = d; mes = m; ano = a; public Data(int d, int m) this(d,

Leia mais

ORIENTAÇÃO A OBJETOS

ORIENTAÇÃO A OBJETOS ORIENTAÇÃO A OBJETOS Mário Meireles Teixeira mario@deif.ufma.br O que é Orietação a Objetos Paradigma modero da egeharia de software Iflui a aálise, projeto (desig) e programação A aálise orietada a objetos

Leia mais

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento. Introdução Atributos, métodos e encapsulamento joao@ecomp.uefs.br Atributos Ipos de acesso: private, public, protected e default Encapsulamento Métodos Construtores Criando objetos Departamento de Ciências

Leia mais

4 Conceito de Herança

4 Conceito de Herança 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

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

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Herança Aula de Hoje Problema Considere uma empresa que tenha tipos de empregados no aplicativo de folha de pagamento Um empregado tem nome,

Leia mais

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis

Leia mais

Paradigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20

Paradigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20 PPROG Paradigmas da Programação Tipos Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20 Sumário Interesse Definição Implementação Declaração Valor de um Tipo Enumerado Variável de Tipo Enumerado Métodos Automáticos

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla. Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado

Leia mais

Programação Orientada a Objetos OUTROS MECANISMOS

Programação Orientada a Objetos OUTROS MECANISMOS Programação Orientada a Objetos OUTROS MECANISMOS Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Unidade V Unidade IV Outros Mecanismos: Classes parametrizadas. A biblioteca

Leia mais

Programação Orientada a Objetos II

Programação Orientada a Objetos II Programação Orientada a Objetos II Prof. Walter Gima walter.gima@anhanguera.com 1 Interfaces Polimorfismo 2 Agenda Interfaces Interfaces x Classes Abstratas Polimorfismo Herança Múltipla 3 Interfaces São

Leia mais

SCC PROGRAMAÇÃO ORIENTADA A OBJETOS

SCC PROGRAMAÇÃO ORIENTADA A OBJETOS SCC0504 - PROGRAMAÇÃO ORIENTADA A OBJETOS Linguagem C++ Prof. Jose Fernando Rodrigues Junior http://www.icmc.usp.br/~junio junio@icmc.usp.br Slides: Prof. Marcelo Manzato INSTITUTO DE CIÊNCIAS MATEMÁTICAS

Leia mais

Vectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2009/2010

Vectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2009/2010 Vectores: Algoritmos de Ordenação Algoritmos e Estruturas de Dados 2009/2010 Ordenação Problema (ordenação de vector) rearranjar os n elementos de um vector (v) por ordem crescente, ou melhor, por ordem

Leia mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação

Leia mais

POO29004 Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos POO29004 Programação Orientada a Objetos Herança Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo 11 de setembro

Leia mais

Introdução. LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++.

Introdução. LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++. Java Parte I mleal@inf.puc-rio.br 1 Introdução LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++. Todos os programas Java são compilados e interpretados. O compilador

Leia mais

package especificadores1; public class Alpha { public static void alphapublic(){ System.out.println("Alpha public!"); }

package especificadores1; public class Alpha { public static void alphapublic(){ System.out.println(Alpha public!); } package especificadores1; public class Alpha { public static void alphapublic(){ System.out.println("Alpha public!"); protected static void alphaprotected(){ System.out.println("Alpha protected!"); static

Leia mais

POO29004 Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo

Leia mais

Introdução. Universidade Federal de Uberlândia. Programação Orientada a Objetos. Prof. Fabiano Dorça

Introdução. Universidade Federal de Uberlândia. Programação Orientada a Objetos. Prof. Fabiano Dorça Introdução Universidade Federal de Uberlândia Programação Orientada a Objetos Prof. Fabiano Dorça Introdução Definições iniciais: classe, objeto, métodos, atributos. Introdução Ao escrever um programa

Leia mais

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica Alcides Pamplona Linguagem de Programação CESBD 2010 Alcides Pamplona alcides.pamplona@gmail.com Tópicos Ligação Dinamica Polimorfismo Verificação Dinâmica de Tipos 2 Introdução A vinculação ou ligação

Leia mais

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento Orientação a objetos Programação Orientada a Objetos Alexandre César Muniz de Oliveira Linguagens orientadas a procedimentos e linguagens orientadas a objetos Unidade de programação: funções e classes

Leia mais

9 Classes Abstractas e Interfaces

9 Classes Abstractas e Interfaces 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais