Vous êtes sur la page 1sur 36

Programao Orientada a Objetos

Prof. Dr. Antonio Marcos SELMINI


profselmini@uninove.br

Implementao de Classes, Objetos e Mtodos no


Java

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Projeto Orientado a Objetos


As principais etapas envolvidas so:
Identificao dos objetos envolvidos com o sistema a ser
desenvolvido e sua representao em forma de classes;
Identificao de suas caractersticas relevantes e sua
representao em forma de atributos;
Identificao de aes realizadas por esses objetos e sua
representao em forma de mtodos;

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Projeto Orientado a Objetos


A unidade fundamental de programao no Java a classe;
Classes fornecem a estrutura para os objetos e os mecanismos
para fabricar objetos a partir de uma definio de classe;
Classes definem os atributos e mtodos:
Atributos: caractersticas relevantes dos objetos;
Mtodos: coleo de cdigo executvel que so o foco da computao
e que manipulam os dados armazenados nos objetos;
Mtodos fornecem o comportamento dos objetos de uma classe;

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Objetos
Qualquer entidade do mundo real que apresente algum significado,
mesmo que no se constitua em algo concreto;
Todo objeto possui caractersticas prprias atributos;
Atributos permitem distinguir um objeto de outros objetos;
Objetos manifestam comportamentos mtodos;
Objetos podem ser:
Concretos: pessoas, carros, etc;
Abstratos: crculo, elipse, etc

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Classes
Uma vez identificados os objetos relevantes e seus atributos, estes
devem ser agrupados em classes;
Quando um conjunto de objetos possuem atributos comuns significa
que eles pertencem a uma mesma categoria;
Classe um sinnimo de categoria;
Classe representa um grupo de objetos com caractersticas comuns
e compem-se de atributos e mtodos;

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Estrutura de uma Classe no Java


//declarao dos pacotes
public class NomeDaClasse //a diretiva public pode ser omitida
{
//declarao de variveis variveis de instncia (atributos)
//declarao dos mtodos
}

O conjunto de variveis e mtodos de uma classe chamado de membros


da classe.
Uma classe pode ter 3 tipos de membros:
Variveis (atributos);
Mtodos: definem o cdigo executvel da classe e o comportamento dos
objetos;
Classes: uma classe pode ter outros classes dentro dela.
6

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Exemplo de uma classe


public class Pessoa // uma classe pblica
{
String nome;
int idade;
}

Ou
class Pessoa // no uma classe pblica
{
String nome;
int idade;
}
7

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Convenes de nomeao
Classes: a primeira letra deve ser maiscula e, se vrias palavras
forem escritas juntas, a primeira letra de cada palavra interna deve
ser maiscula (formato em ingls chamado de camelCase);
Para classes, os nomes devem normalmente ser substantivos;
Exemplos: Cachorro, Conta, Pessoa, Aluno, etc...

Mtodos: a primeira letra deve ser minscula, e depois as regras


camelCase devem ser usadas;
Os nomes devem normalmente ser pares de verbo-substantivo;
Exemplos: obterSaldo(), imprimirNota(), definirNomeDoCliente(), etc...

Variveis: segue a mesma regra utilizada para mtodos;


Exemplos: larguraDoCampo, saldoDaConta, nomeDoAluno, etc...

Constantes: sempre em letras maisculas;


Exemplos: ALTURA_MAXIMA, PI, JUROS, etc...
8

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Regras para Arquivos-Fontes


S pode haver uma classe pblica em cada arquivo-fonte;
Se houver uma classe pblica em um arquivo, o nome do arquivo
deve ser o mesmo da classe pblica;
Um arquivo pode ter mais de uma classe no pblica;
Arquivos que no tenham classes pblicas podem ter um nome que
no seja o mesmo de nenhuma das classes do arquivo;
Caso a classe utilizada no arquivo esteja em um pacote, a
declarao import deve vir no incio do arquivo;

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Instanciao
Instanciar uma classe significa criar novos objetos a partir da
classe;
Todo objeto instanciado pertence a uma classe, ou seja, o tipo de
um objeto sempre uma determinada classe;
A sintaxe para a instanciao de um objeto :
NomeDaClasse nomeDoObjeto = new NomeDaClasse();

Exemplo de instanciao:
Pessoa p = new Pessoa();
classe varivel de referncia
Declarao da varivel
de referncia

operador de instanciao
Instanciao da classe
10

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Atributos
Tambm conhecidos como dados membros ou variveis de
instncia;
Representam as caractersticas dos objetos do mundo real que
pertencem a classe;
Os atributos so variveis que devem ser declarados dentro das
classes (fora dos mtodos);
Exemplos:
public class Pessoa
{
String nome;
int idade;
}

Atributos ou variveis de instncia

11

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Manipulao de Objetos
No se esquea que uma classe somente define os atributos e
mtodos de um conjunto de objetos;
Para utilizar os atributos necessrio criar um ou mais objetos da
classe;
Cada objeto contm uma cpia de todos os atributos da classe
que armazenam informaes distintas nos atributos de cada um dos
objetos;
Exemplos:

Pessoa p1 = new Pessoa();


Pessoa p2 = new Pessoa();
p1.nome = maria;
p1.idade = 20;
p2.nome = joo;
p2.idade = 30;
12

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Pilha e Heap
As vrias partes (mtodos, variveis e objetos) dos programas Java
residem em um dos dois seguintes lugares da memria: a pilha ou o
heap;
As variveis de instncia e os objetos residem no heap;
As variveis locais e os mtodos residem na pilha;
Exemplo:
public class Dog {
String nome; //varivel de instncia
public static void main(String args[]) {
Dog d; //varivel local
d = new Dog();
}
}
13

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Pilha e Heap - Exemplo


public class Cachorro {
String nome;
public static void main(String[] args) {
Cachorro c;
c = new Cachorro();
}
Varivel de
referncia

main()

objeto String

Varivel de
referncia

Varivel de
instncia
- nome
objeto Cachorro

A pilha

O heap

14

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Atributos constantes
H casos em que um atributo deve armazenar um valor que no
deve ser modificado;
Define uma propriedade imutvel de uma classe ou objeto
propriedade que no se altera durante o tempo de vida do objeto;
Eles so chamados de atributos constantes e sua inicializao
feita no momento da declarao;
A declarao feita com a diretiva final;
Sintaxe:
<encapsulamento> final <tipo> <nome_atributo> = <valor>;

15

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Exemplo: atributo constante (final)


public class ContaBancaria
{
String nome;
double saldo;
final double limiteCredito = 500;
}

16

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Atributos Estticos (modificador static)


Imagine que voc quisesse manter uma contagem de todas as
instncias criadas a partir de uma classe especfica;
Onde voc armazenaria essa varivel?
No funcionaria mant-la em uma varivel de instncia dentro da
classe cujas instncias voc est registrando, porque a contagem
ser reiniciada com um valor padro a cada nova instncia;
Soluo: atributos estticos;
O modificador static pode ser utilizada tanto para variveis quanto
para mtodos;
Variveis e mtodos marcados com static pertencem classe, ao
invs de pertencer a uma instncia especfica;
17

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Atributos Estticos (modificador static)


Voc pode usar um mtodo ou varivel esttica sem ter nenhuma
instncia da classe. Basta ter simplesmente a classe;
As variveis estticas podem ser acessadas sem ter a instncia de
uma classe;
Se houve instncias, a varivel esttica ser compartilhada por
todas as instncias (s haver uma cpia);
Sintaxe:
<encapsulamento> static <tipo> <nome_atributo>;

18

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Exemplo: atributo esttico (static)


public class ContaBancaria
{
String nome;
double saldo;
static double limiteCredito = 500;
}

19

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Acessando variveis estticas


Variveis estticas no devem ser acessadas usando variveis de
referncia (instncia da classe), porque pode no haver nenhuma
instncia da classe;
Neste caso usado o operador ponto no nome da classe, e no na
referncia a uma instncia;
Exemplo:
public class Teste {
static int cont = 0;
public static void main(String[] args) {
System.out.println(Teste.cont);
}
}
20

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Mtodos
Contm o cdigo que entende e manipula o estado de um objeto;
Uma declarao de mtodo consiste de duas partes: o cabealho
do mtodo e o corpo do mtodo;
Um cabealho bsico de mtodo segue a seguinte sintaxe:
<encapsulamento> <tipo_retorno> <nome_mtodo>([lista de parmetros])

A assinatura do mtodo consiste do nome do mtodo seguido pela


lista de parmetros;
O corpo do mtodo contm o cdigo necessrio para manipular os
estados do objeto;
21

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Invocao de Mtodos
Mtodos so invocados como operaes sobre objetos atravs de
referncia usando o operador ponto (.)
Sintaxe:
referncia.mtodo(argumentos)

Quando um mtodo invocado, uma lista de argumentos do tipo


adequado deve ser fornecido;
Mtodos tambm tm um tipo de retorno, seja um tipo primitivo ou
um tipo de referncia. Se no tiver retorno deve ser declarado com
void;

22

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Exemplo: invocao de mtodos


public class Soma {
int x, y;
public int somar(int num) {
y = x + num;
return y;
}
}
Soma s = new Soma();
s.somar(2);
int z = s.somar(4);

23

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Mtodos Constantes
So mtodos que no podem ser alterados em uma classe filha
quando a operao de herana empregada;
Para impedir que um mtodo possa ter seu cdigo alterado, o
mesmo deve ser declarado com a diretiva final;
Sintaxe:
<encapsulamento> final <tipo> <nome_mtodo>([parmetros]) {}

24

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Exemplo: mtodo constante


public class ContaBancaria
{
String nome;
double saldo;
static double limiteCredito = 500;
public final void depositar(double d)
{
saldo += d;
}
}
25

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Mtodos Estticos (modificador static)


Imagine uma classe utilitria com apenas um mtodo que sempre
executado da mesma maneira (por exemplo, retornar um valor
inteiro);
Independente de que instncia da classe execute o mtodo, ele
sempre se comportar do mesmo modo;
O comportamento do mtodo no depende do estado (valores de
varivel de instncia) de um objeto;
Voc precisa de um objeto, j que o mtodo nunca ser especfico
da instncia? Porque no solicitar classe para executar o mtodo?
Soluo: mtodos estticos;
Sintaxe:
<encapsulamento> static <tipo> <nome_mtodo>([parmetros]){}
26

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Mtodos Estticos
O acesso a um mtodo esttico realizado de forma semelhante a
variveis estticas, ou seja, por meio do nome da classe;
Mtodo estticos no podem acessar variveis de instncia
(variveis no estticas) ou mtodos no estticos;

27

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Mtodos Estticos - Exemplo


public class ContaBancaria {
String nome;
double saldo;
static double limiteCredito = 500;
public static void aumentarCredito()
{
limiteCredito *= 1.2;
Como utilizar?
}
ContaBancaria cb
}

= new ContaBancaria();
cb.aumentarCredito();

Ou
ContaBancaria.aumentarCredito();
28

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Mtodos Estticos - Exemplos


public class Foo {
int size = 42;
public static void doMore()
{
int x = size;
public class Bar {
}
public void go(){}
}
public static void doMore()
O mtodo static no capaz de acessar
{
uma varivel de instncia (no-static)
go();
}
}
O mtodo static no capaz de acessar
um mtodo no-static

29

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Mtodos Estticos - Exemplos


public class Baz {
static int count;
static void woo() {}
static void doMore() {
woo();
int x = count;
}
}

O mtodo static capaz de acessar um mtodo ou uma


varivel static.

30

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Sobrecarga de mtodos
Cada mtodo possui uma assinatura (nome e o nmero e tipos de
seus parmetros);
Dois mtodos podem ter o mesmo nome se eles tiverem diferentes
nmeros e/ou tipos de parmetros. Isso chamado de sobrecarga
de mtodo.
Sobrecarga geralmente usada quando um mtodo trabalha com
tipos ou nmero de parmetros diferentes;

31

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Exemplo: sobrecarga de mtodos


public class Teste {
int x;
double y;
public void quadradro(int n) {
x = Math.pow(x, n);
}
public void quadradro(double n) {
y = Math.pow(y, n);
}
}

32

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Mtodo Construtor
Desempenham papel essencial no processo de instanciao de
uma classe;
Os construtores tambm so utilizados para inicializar os atributos
com valores padro ou com valores informados;
Entenda-se por inicializar os atributos como inicializar o estado de
variveis de instncia;
So mtodos especiais que so invocados juntamente com o
operador new;
Construtores no possuem valor de retorno (nem mesmo void) e
possuem o mesmo nome da classe;
Toda vez que um objeto instanciado, um construtor chamado;
Construtores so chamados apenas em tempo de execuo;
33

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Exemplo: mtodo construtor


public class ContaBancaria {
String nome;
double saldo;
static double limiteCredito = 500;
public ContaBancaria(String n, double s) {
nome = n;
saldo = s;
}
public static void aumentarCredito() {
limiteCredito *= 1.2;
}
}
34

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Regras dos Construtores

O nome do construtor deve coincidir com o nome da classe;


Os construtores no devem ter um tipo de retorno;
Os construtores podem usar qualquer modificador de acesso;
vlido ter um mtodo com o mesmo nome da classe, mas intil;
Um construtor chamado quando um objeto instanciado, ou, um
construtor poder ser chamado a partir de outro construtor;
Se voc no codificar um construtor o Java codifica o construtor
padro;
Se um construtor for codificado na classe, o Java no codificar o
construtor padro;

35

Programao Orientada a Objetos


Prof. Dr. Antonio Marcos SELMINI

Importando membros estticos


Mtodos estticos devem ser referidos usando o nome da classe
qual o membro esttico pertence, por exemplo: Math.sqrt();
possvel usar mtodos estticos sem a referncia da classe. Para
isso deve ser usado o comando import esttico;
Exemplo:
import static javax.swing.JOptionPane.*;

36

Vous aimerez peut-être aussi