Você está na página 1de 25

Classes, Objetos e Introducao a Java

Carlos Olarte

4 de Agosto de 2016

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

1 / 25

Programacao OO

Ideia Geral
Criar um modelo de uma parte do mundo.
Representar os objetos que aparecem no domnio do problema.
Nesta aula aprenderemos a:
Definir uma classe.
Adicionar atributos e metodos a uma classe.
Utilizar comandos basicos de Java.
Utilizar corretamente os modificadores de acesso.

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

2 / 25

Classes e Abstracoes

Considere um carro:
1

Quais sao as caractersticas de um carro ?

Que coisas pode fazer um carro ?

Todos os carros alcancam a mesma velocidade ?

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

3 / 25

Classes

Classes
Abstracao para agrupar objetos comuns que tem o mesmo
comportamento.
Descrevem de maneira abstrata o comportamento dos objetos.
A palavra classe vem da taxonomia da biologia. Todos os seres vivos de
uma mesma classe biologica tem uma serie de atributos e comportamentos
em comum, mas nao sao iguais, podem variar nos valores desses atributos
e como realizam esses comportamentos.

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

4 / 25

Objetos

Objetos sao instancias de uma classe:


Encapsulam um estado
Respondem `as mensagens com a execucao de um metodo.
Os objetos de uma mesma classe compartem o comportamento definido
pela sua classe.

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

5 / 25

Objetos e Classes

Considere a classe Crculo:


Quais sao as caractersticas de um crculo ?

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

6 / 25

Atributos e Estado

O estado de um objeto esta definido pelos valores dos atributos de classe.


Os tipos dos atributos podem ser:
Tipos primitivos: int, float, double, etc.
Tipos definidos pelo usuario (classes).

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

7 / 25

Modificadores de acesso

No seguinte codigo em C++, e possvel proteger os valores dos atributos ?


struct Circulo {
double x , y ;
double raio ;
};

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

8 / 25

Modificadores de acesso

public: qualquer um pode acessar o atributo.


protected: apenas subclasses podem acessar o atributo.
private: apenas podem acessar a variavel os metodos da classe.

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

9 / 25

Utilizando NetBeans
1

Criar um projeto:

Selecionar Java Application:

Dar um nome ao projeto:

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

10 / 25

Imprimir na tela

Funcao main
Ao criar o projeto com a opcao Create Main Class, NetBeans vai
criar uma classe com um u
nico metodo: main.
public static void main ( String [] args ) {
System . out . println ( " Alo Mundo Java !! " ) ;
// Posso imprimir n
u meros
System . out . println (3) ;
// N
u meros e Strings
System . out . println ( " Uma string e depois um
n
u mero " +3.1416 ) ;
}

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

11 / 25

Criando a classe Crculo


1

Criar uma classe:

Selecionar Java Class:

Dar um nome `a classe:

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

12 / 25

Atributos de classe

Dentro da classe Circulo definimos os atributos:


public class Circulo {
private double x , y ;
private double raio ;
}

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

13 / 25

Construtores
Para criar um objeto (uma instancia de uma classe) devemos utilizar os
construtores fornecidos pela classe:
Se nenhum construtor e definido, Java define um construtor default.
Uma classe pode definir varios construtores (com diferentes
parametros).
public Circulo ( double raio ) {
this . raio = raio ;
this . x = 0 ;
this . y = 0 ;
}
public Circulo ( double x , double y , double raio ) {
this . x = x ;
this . y = y ;
this . raio = raio ;
}
Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

14 / 25

Criando objetos
No metodo main podemos criar objetos da classe Circulo para testar:
public static void main ( String [] args ) {
System . out . println ( " Alo Mundo Java !! " ) ;
Circulo c1 = new Circulo (5.5) ;
Circulo c2 = new Circulo (3.0 , -10.0 , 5.5) ;
}

Atencao!
Os atributos privados da classe nao podem ser acedidos no main (fora da
classe):
// erro de compila
c~
a o : raio has private access in
Circulo
System . out . println ( c1 . raio ) ;

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

15 / 25

Getters e Setters
Para acessar os atributos privados de uma classe:
Metodos get: retorna o valor de um atributo.
Metodos set: muda o valor de um atributo.
// getter
public double getRaio () {
return this . raio ;
}
// setter
public void setRaio ( double raio ) {
this . raio = raio ;
}

Warning!
Nao deve definir metodos set/get para atributos que nao deveriam ser
acessados pelos usuarios da classe.
Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

16 / 25

Getters e Setters

NetBeans pode gerenciar automaticamente os setters e getters da classe.

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

17 / 25

Metodos

Definem o comportamento da classe: as operac


oes que um objeto
pode fazer.
Os metodos podem ser public, protected ou private.

Example (getArea)
public double getArea () {
return 2 * Math . PI * Math . pow ( this . raio ,2) ;
}

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

18 / 25

Utilizando metodos

No main podemos testar os metodos definidos:


public static void main ( String [] args ) {
Circulo c1 = new Circulo (5.5) ;
c1 . setRaio (10.0) ;
System . out . println ( " A
a rea do c
rculo de raio
+ c1 . getRaio () + "
e " + c1 . getArea () ) ;
}

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

"

19 / 25

Exerccio

Implemente a classe Complexo para representar um n


umero complexo. Sua
classe deve oferecer os seguintes metodos:
metodos set/get para a parte real e imaginaria.
modulo:
odulo do n
umero complexo
p que retorna o m
2
2
(Z = real + img )
Reset: atribui 0.0 `a parte real e `a parte imaginaria.
incrementar: incrementa em 1 a parte real do n
umero complexo.
Conjugado: retorna o conjugado do n
umero complexo (se Z = a + bi
entao Z = a bi).
Escreva um bloco main para testar.

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

20 / 25

Questao

O que sera impresso pelo seguinte c


odigo?
Complexo cc = new Complexo (0 ,0) ;
Complexo cc2 = new Complexo (0 ,0) ;
if ( cc == cc2 )
System . out . println ( " iguais " ) ;
else
System . out . println ( " diferentes " ) ;

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

21 / 25

Solucao
public boolean iguais ( Complexo c ) {
if ( c . real == this . real && c . img == this . img )
return true ;
else
return false ;
}

... uma melhor opcao


public boolean equals ( Object o ) {
if ( o instanceof Complexo ) {
Complexo c = ( Complexo ) o ;
if ( c . real == real && c . img == img )
return true ;
}
return false ;
}
Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

22 / 25

Imprimir as informacoes de um objeto

public String toString () {


return this . real + " + " + this . img + " i " ;
}

No main podemos fazer o seguinte:


Complexo c = new Complexo (3.2 , 5.4) ;
// Java utiliza o m
e todo toString para retornar uma
string a partir do complexo c .
System . out . println ( c ) ;

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

23 / 25

Exerccio 2
Defina a classe Pessoa com os seguintes atributos: Nome, Sobrenome e
Data de nascimento. Para a data, utilize a classe GregorianCalendar:
import java . util .*;
...
GregorianC alend ar x = new Gre gorian Calend ar
(1950 ,12 ,20) ;

A classe deve oferencer os seguintes metodos:


set/get para cada atributo.
nomeCompleto que retorna o nome e sobrenome concatenados.
testIdade(Pessoa P): que retorna true se a idade de P e igual `a idade
do objeto que chamou o metodo (this). Para isso, veja o metodo
compareTo da classe Calendar (http://docs.oracle.com/javase/
7/docs/api/java/util/Calendar.html)
maisNovo(Pessoa P): retorna true se P e mais nova que o objeto
que chamou o metodo.
Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

24 / 25

Exerccio 3

Toda conta bancaria possui um n


umero, nome do dono da conta, saldo e
limite. Defina class Conta com as seguintes funcionalidades:
sacar uma quantidade X de dinheiro (sem ultrapassar o limite da
conta).
depositar uma quantidade X de dinheiro.
imprimir as informacoes da conta (utilize o metodo toString).
transferir uma quantidade X para uma outra conta Y.
retornar o saldo atual da conta.
Escreva um bloco main para testar os metodos da classe.

Carlos Olarte

Classes e Objetos

4 de Agosto de 2016

25 / 25

Você também pode gostar