Académique Documents
Professionnel Documents
Culture Documents
Tpicos da Aula
Conceitos de classe
Classes e Objetos
Membros
Eduardo Figueiredo
http://www.dcc.ufmg.br/~figueiredo
Classes em Java
Com a extenso
.java
Modificador public
permite acesso /
chamadas de
qualquer outra classe
void acelerar() {}
void frear() {}
}
Arquivo Carro.java
Assinatura de Mtodos
Modificador + Tipo de Retorno +
Nome do Mtodo + Lista de Parmetros
Modificador: public | private | protected | ...
Tipo de Retorno: void | int | String | ...
Nome:
acelerar | frear | ...
Parmetros:
delimitado por
parnteses
Visibilidade em UML
Pblica (+)
public class Pessoa {
Protegida (#)
Somente a classe ou
sub-classes tero acesso
}
Privada (-)
Somente a classe ter acesso
Construtores de Objetos
De classe
De objeto
Variveis
De classe
De Objeto
Constantes
Construtor Padro
Exemplo: Time1
public class Time1 {
Construtores Sobrecarregados
Exemplo: Time1Test
public class Time1Test {
public static void main( String[] args ) {
Time1 time = new Time1();
System.out.print( "Hora inicial: " );
System.out.println( time.toString() );
System.out.println();
Chamada ao
construtor padro
cria um objeto Time1.
}
}
Exemplo: Time2
Exemplo: Time2
public Time2() {
declarados, o construtor
this( 0, 0, 0 );
padro (sem argumentos) no
}
fornecido automaticamente.
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 ) {
setTime( h, m, s );
}
public Time2( Time2 time ) {
this( time.getHour(), time.getMinute(), time.getSecond() );
}
...
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
Exemplo: Time2Test
Criao de 6 objetos
usando diferentes
construtores.
Mtodo finalize
O mtodo finalize esta disponvel em
todo objeto
Mtodos, Variveis e
Constantes
Membros Estticos
Exemplo: Employee
Varivel de classe conta o
public class Employee {
private String firstName;
nmero de objetos Employee.
private String lastName;
protected static int count = 0;
Varivel de Classe
Usada quando apenas uma varivel
compartilhada pelos objetos da classe
Mtodo de Classe
Funes que podem ser executadas
independente de um objeto
Exemplo: EmployeeTest
Exemplo: EmployeeTest
Cria Employee
Bob.
System.out.println( "" );
System.out.println( "Employee.count: " + Employee.count);
System.out.println( "e1.count: " + e1.count);
System.out.println( "e2.count: " + e2.count);
System.out.println( "" );
System.out.println( "Employee.count: " + Employee.count);
System.out.println( "e1.count: " + e1.count);
System.out.println( "e2.count: " + e2.count);
}
}
}
}
Constantes
Exemplo: Increment
A padronizao do nome de
constantes MAIUSCULO.
O valor de uma
constante s pode ser
alterado no construtor.
Constantes podem ser
acessadas da mesma
forma que variveis.
Exemplo: IncrementTest
public class IncrementTest {
public static void main( String[] args ) {
Increment value = new Increment( 5 );
Associao e Herana
Associao e Composio
Uma classe pode ter referncias para
objetos de outras classes
Exemplo, para saber quando despertar,
um relgio tem que saber a hora
AlarmClock
setAlarm()
Time
hour
minute
second
...
Associao em Java
public class AlarmClock {
protected Time alarm;
public void setAlarm(Time1 time) { alarm = time; }
...
}
AlarmClock
setAlarm()
Time
hour
minute
second
...
Especializao / Generalizao
Herana em UML
Pessoa
nome
email
Semntica um
Tudo que a classe geral pode fazer,
as classes especficas tambm podem
Herana em Java
Professor
Aluno
matricula
// 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 Herana
O grfico de herana uma fonte de
conhecimento sobre o domnio do
sistema
um mecanismo de abstrao usado
para classificar entidades
Mecanismo de reuso em vrios nveis
Tanto na fase de projeto como na
programao
Principal Problema
Classes de objetos no so autocontidas
No 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 {
Acessvel s classes
protected String nome;
Aluno e Professor
private String email;
public void enviarMensagem() { ... }
}
public class Aluno extends Pessoa { ... }
public class Professor extends Pessoa { ... }
Bibliografia da Aula
DEITEL, H. M.; DEITEL P. J. Java:
Como Programar, 8a. Edio.
Pearson, 2010.
Captulo 8 Classes e Objetos
Captulo 9 Herana