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



Documentos relacionados
Programação aplicada de computadores Andréa Maria Pedrosa Valli

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

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

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

Programação Orientada a Objetos (DPADF 0063)

Análise e Projeto Orientados por Objetos

Java 2 Standard Edition Como criar classes e objetos

Herança. Alberto Costa Neto DComp - UFS

Técnicas de Programação II

Encapsulamento de Dados

Programação por Objectos. Java

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

Reuso com Herança a e Composiçã

NetBeans. Conhecendo um pouco da IDE

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

Criando documentação com javadoc

Análise de Programação

Programação por Objectos. Java

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

Orientação a Objetos com Java

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

Orientação a Objetos e a Linguagem Java

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

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

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

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

Programação Orientada a Objetos em Java

Profº. Enrique Pimentel Leite de Oliveira

Capítulo 13. Encapsulamento. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

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

Prof. Jhonatan Fernando

Classes, Superclasses e Subclasses

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

Sobre o Professor Dr. Sylvio Barbon Junior

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

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

Programação Orientada por Objetos

Capítulo 5 Reuso de Classes

Programação Orientada a Objetos. Encapsulamento

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Linguagem de Programação III

Implementação de Classe e Auto-Relacionamento em Java

Computação II Orientação a Objetos

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

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

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

THREADS EM JAVA. George Gomes Cabral

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

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

Orientação a Objetos

BSI UFRPE Prof. Gustavo Callou

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

UML Aspectos de projetos em Diagramas de classes

Capítulo 4. Packages e interfaces

Programação com Acesso a BD. Programação com OO Acesso em Java

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

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

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

UNIVERSIDADE FEDERAL DO PARANÁ

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

Engenharia de Software Aula 21. Revisão da Prova 2. Eduardo Figueiredo.

Keeper of Knowledge. Capítulo 2 Classes em Java

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

NOVIDADES DO JAVA PARA PROGRAMADORES C

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

Linguagem de Programação III Herança

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

DEFINIÇÃO DE MÉTODOS

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Unified Modeling Language UML

Projeto de Software Orientado a Objeto

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

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

Capítulo 8. Introdução UML

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

Programação com Objectos. Processamento de Dados I. 3. UML (Unified Modeling Language)

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

Módulo 06 Desenho de Classes

LINGUAGEM ORIENTADA A OBJETOS

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

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

Sumário. Uma visão mais clara da UML

PHP INTRODUÇÃO CLASSES E OBJETOS

ORIENTAÇÃO A OBJETOS. Professora Lucélia Oliveira

Aula 04 Operadores e Entrada de Dados. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

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

ProgramaTchê programatche.net Programação OO com PHP

Introdução a Java. Hélder Nunes

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

CONVENÇÃO DE CÓDIGO JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Java. Marcio de Carvalho Victorino

Análise e Projeto de Sistemas

Transcrição:

DCC / ICEx / UFMG Tópicos da Aula Classes e Objetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Conceitos de classe Membros Construtores, métodos de classe e métodos de objeto, atributos de classe e atributos de objeto Relacionamentos entre classes Associação e Herança Classe Pública em Java Classes em Java Declaração de uma classe pública (public) deve ser feita em um arquivo de mesmo nome Com a extensão.java public class Carro { String cor; int velocidadeatual; Modificador public permite acesso / chamadas de qualquer outra classe void acelerar() { void frear() { Arquivo Carro.java Corpo de Classes e Métodos O corpo de uma classe é delimitado por chaves { O corpo de um método também é delimitado por chaves { public class Carro { String cor; int velocidadeatual; void acelerar() { void frear() { Assinatura de Métodos Modificador + Tipo de Retorno + Nome do Método + Lista de Parâmetros Modificador: public private protected Tipo de Retorno: void int String Nome: acelerar frear Parâmetros: delimitado por parênteses public class Carro { private String cor; private int velocidadeatual; public void acelerar() { public void frear() {

Visibilidade em UML Pública (+) O atributo ou método pode ser utilizado por qualquer classe Protegida (#) Somente a classe ou sub-classes terão acesso Privada (-) Somente a classe terá acesso Visibilidade UML x Java public class Pessoa { protected String nome; private String email; public void enviarmensagem() { Membros de Uma Classe Construtor Métodos De classe De objeto Variáveis De classe De Objeto Constantes Construtores de Objetos Construtor Padrão Toda classe deve ter pelo menos um construtor Responsável pela criação do objeto A chamada do construtor deve ser precedida pela palavra reservada new Se nenhum construtor for declarado, o compilador adiciona automaticamente o construtor padrão Construtor vazio e sem parâmetros Exemplo: Time1 public class Time1 { private int hour; // 0-23 private int minute; // 0-59 private int second; // 0-59 public void settime( int h, int m, int s ) { hour = ( ( h >= 0 && h < 24 )? h : 0 ); minute = ( ( m >= 0 && m < 60 )? m : 0 ); second = ( ( s >= 0 && s < 60 )? s : 0 ); Construtor vazio da classe não precisa ser declarado. public String tostring() { return ( ( hour == 0 hour == 12 )? 12 : hour % 12 ) + ":" + minute + ":" + second + " " + ( hour < 12? "AM" : "PM" ); public Time1 ( ) {

Exemplo: Time1Test public class Time1Test { Time1 time = new Time1(); System.out.print( "Hora inicial: " ); System.out.println( time.tostring() ); System.out.println(); time.settime( 13, 27, 6 ); System.out.print( "Hora apos settime: " ); System.out.println( time.tostring() ); System.out.println(); time.settime( 99, 99, 99 ); System.out.println( "Apos definir hora invalida." ); System.out.print( "Hora: " ); System.out.println( time.tostring() ); Chamada ao construtor padrão cria um objeto Time1. Construtores Sobrecarregados Pode-se definir vários construtores para uma classe Construtores devem ter assinaturas diferentes (parâmetros) Se for declarado algum construtor, o vazio só existe quando declarado Construtor vazio só não precisa ser declarado se não existe outro construtor Exemplo: Time2 public class Time2 { public Time2() { this( 0, 0, 0 ); public Time2( int h ) { this( h, 0, 0 ); public Time2( int h, int m ) { this( h, m, 0 ); public Time2( int h, int m, int s ) { Construtores da settime( h, m, s ); classe Time2. public Time2( Time2 time ) { this( time.gethour(), time.getminute(), time.getsecond() ); Exemplo: Time2 public class Time2 { Se outros construtores forem public Time2() { declarados, o construtor this( 0, 0, 0 ); padrão (sem argumentos) não public Time2( int h ) { é fornecido automaticamente. this( h, 0, 0 ); public Time2( int h, int m ) { this( h, m, 0 ); public Time2( int h, int m, int s ) { settime( h, m, s ); public Time2( Time2 time ) { this( time.gethour(), time.getminute(), time.getsecond() ); Exemplo: Time2 public class Time2 { public Time2() { A referência this indica a this( 0, 0, 0 ); chamada do construtor public Time2( int h ) { correspondente. this( h, 0, 0 ); public Time2( int h, int m ) { this( h, m, 0 ); public Time2( int h, int m, int s ) { settime( h, m, s ); public Time2( Time2 time ) { this( time.gethour(), time.getminute(), time.getsecond() ); Exemplo: Time2Test public class Time2Test { Time2 t1 = new Time2(); Time2 t2 = new Time2( 2 ); Time2 t3 = new Time2( 21, 34 ); Time2 t4 = new Time2( 12, 25, 42 ); Time2 t5 = new Time2( 27, 74, 99 ); Time2 t6 = new Time2( t4 ); Criação de 6 objetos usando diferentes construtores. System.out.print( "t1: " ); System.out.println( t1.tostring() ); System.out.print( "t2: " ); System.out.println( t2.tostring() ); System.out.print( "t3: " ); System.out.println( t3.tostring() ); System.out.print( "t4: " ); System.out.println( t4.tostring() ); System.out.print( "t5: " ); System.out.println( t5.tostring() ); System.out.print( "t6: " ); System.out.println( t6.tostring() );

Método finalize Métodos, Variáveis e Constantes O método finalize esta disponível em todo objeto Ele pertence a classe Object, que toda classe estende direta ou indiretamente Antes de um objeto ser descartado pelo coletor de lixo, o método finalize é chamado Este método pode ser sobrescrito por qualquer objeto (o que deve ser evitado) Membros Estáticos Variável de Classe Usada quando apenas uma variável é compartilhada pelos objetos da classe Método de Classe Funções que podem ser executadas independente de um objeto Variáveis e métodos estáticos podem ser usados mesmo sem nenhum objeto Exemplo: Employee public class Employee { Variável de classe conta o private String firstname; número de objetos Employee. private String lastname; protected static int count = 0; public Employee( String first, String last ) { firstname = first; lastname = last; ++count; public String getfirstname() { return firstname; public String getlastname() { return lastname; public static int getcount() { return count; Um método estático só pode acessar diretamente membros estáticos. Exemplo: EmployeeTest Exemplo: EmployeeTest public class EmployeeTest { System.out.println( "Incio do programa, count: " + Employee.count); Employee e1 = new Employee( "Susan", "Baker" ); System.out.println( "Criou Susan" ); Cria Employee Susan. public class EmployeeTest { System.out.println( "Incio do programa, count: " + Employee.count); Employee e1 = new Employee( "Susan", "Baker" ); System.out.println( "Criou Susan" ); Employee e2 = new Employee( "Bob", "Blue" ); System.out.println( "Criou Bob" ); System.out.println( "e2.count: " + e2.count); Cria Employee Bob. Employee e2 = new Employee( "Bob", "Blue" ); Os valores são o mesmos (2) porque os objetos System.out.println( "Criou Bob" ); System.out.println( compartilham "e2.count: a mesma " + e2.count); variável count System.out.println( "" ); System.out.println( "Employee.count: " + Employee.count); System.out.println( "e2.count: " + e2.count); System.out.println( "" ); System.out.println( "Employee.count: " + Employee.count); System.out.println( "e2.count: " + e2.count);

Constantes O modificador final é usado para indicar constantes do programa Os valores não podem ser modificados O uso do modificador final torna o programa mais robusto Evita que o valor seja acidentalmente modificado Exemplo: Increment A padronização do nome de public class Increment { constantes é MAIUSCULO. private int total = 0; private final int INCREMENT; public Increment( int incrementvalue ) { INCREMENT = incrementvalue; public void addincrementtototal() { total += INCREMENT; public String tostring() { return "total = " + total; O valor de uma constante só pode ser alterado no construtor. Constantes podem ser acessadas da mesma forma que variáveis. Exemplo: IncrementTest public class IncrementTest { Increment value = new Increment( 5 ); Associação e Herança System.out.println( "Before incrementing: " + value ); for ( int i = 1; i <= 3; i++ ) { value.addincrementtototal(); System.out.println( "After increment " + i + ": " + value ); Associação e Composição Uma classe pode ter referências para objetos de outras classes Exemplo, para saber quando despertar, um relógio tem que saber a hora Associação em Java public class AlarmClock { protected Time alarm; public void setalarm(time1 time) { alarm = time; AlarmClock Time AlarmClock Time setalarm() hour minute second setalarm() hour minute second

Especialização / Generalização Herança em UML Identificar super-classe (geral) e subclasses (especializadas) Semântica é um Tudo que a classe geral pode fazer, as classes específicas também podem Atributos e métodos definidos na classe-mãe são herdados pelas classes-filhas Professor Pessoa nome email Aluno matricula Herança em Java Outro Exemplo UML // Pessoa.java public class Pessoa { protected String nome; private String email; public void enviarmensagem() { // Aluno.java public class Aluno extends Pessoa { private String matricula; // Professor.java public class Professor extends Pessoa { Vantagens da Herança Principal Problema O gráfico de herança é uma fonte de conhecimento sobre o domínio do sistema É um mecanismo de abstração usado para classificar entidades Mecanismo de reuso em vários níveis Tanto na fase de projeto como na programação Classes de objetos não são autocontidas Não podem ser compreendidas sem olhar para as suas super-classes

Membros Protegidos Podem ser acessados por sub-classes mesmo que estejam em pacotes diferentes public class Pessoa { Acessível às classes protected String nome; Aluno e Professor private String email; public void enviarmensagem() { Bibliografia da Aula DEITEL, H. M.; DEITEL P. J. Java: Como Programar, 8a. Edição. Pearson, 2010. Capítulo 8 Classes e Objetos Capítulo 9 Herança public class Aluno extends Pessoa { public class Professor extends Pessoa {