Você está na página 1de 57

Programao Orientada a Objetos usando JAVA

Autor: Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

Programao Orientada a Objetos I

Programao procedural

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

2/55

Programao Orientada a Objetos I

Introduo a Objetos

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

3/55

Programao Orientada a Objetos I

Introduo a Objetos

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

4/55

Programao Orientada a Objetos I

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

5/55

Programao Orientada a Objetos I

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

6/55

Programao Orientada a Objetos I

Conceitos bsicos - Abstrao

Carro, Livro, Aluno, etc

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

7/55

Programao Orientada a Objetos I

Conceitos bsicos - Objeto


Tudo em OO OBJETO Definio (mundo do software) Qualquer coisa, real ou abstrata, a respeito da qual armazenamos dados e mtodos que os manipulam (Martin e Odell, 1995) Abstraodeumaentidadedomundorealdemodoque essa entidade possua vrias caractersticas e servios Exemplos:objetocasa,objetocachorro

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

8/55

Programao Orientada a Objetos I

Conceitos bsicos - Objeto


Resumindo: OBJETO: Pacote de informaes (atributos) e a descrio
de suas operaes (mtodos), de modo que elas so intrnsecas ao seu domnio e este formado pelos elementos que o caracterizam

Exemplo:

Objeto:Pessoa
Atributos:Nome,DatadeNascimento,Cor Mtodos:Acordar,Comer,BeberDormir

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

9/55

Programao Orientada a Objetos I

Conceitos bsicos - Mtodos


Mtodos ou Operaes: podem mudar a estrutura de dados dos objetos Mtodos so invocados por mensagens Cada objeto possui seu prprio conjunto de mtodos Definies: So procedimentos definidos e declarados que atuam sobre um objeto Descrio de uma seqncia de aes a serem executadas por um objeto Por meio dos mtodos que especifica-se a um objeto COMO FAZER alguma coisa So intrnsecos aos objetos e no podem ser separados

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

10/55

Programao Orientada a Objetos I

Conceitos bsicos - Classe


Classe abstrao de um conjunto de objetos similares do mundo real conjunto de objetos que possuem propriedades semelhantes (ATRIBUTOS), o mesmo comportamento (MTODOS), os mesmos relacionamentos com outros objetos e a mesma semntica TodoobjetoumainstnciadeumaClasse Todas as instncias de uma classe tm valores prprios para os atributos especificados na classe Os objetos representados por determinada classe diferenciam-se entre si pelos valores de seus atributos Exemplo: Classe de espcies em Zoologia
Juliano Marcos Martins julianom@br.ibm.com
05/01/2008
11/55

Programao Orientada a Objetos I

Conceitos bsicos - Represetao

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

12/55

Programao Orientada a Objetos I

Conceitos bsicos - Encapsulamento


Caractersticaquevisaesconderdetalhesde implementao alcanadoemOO,vistoqueoobjeto,quando implementado, possui uma parte privada (atributos) e uma parte pblica (mtodos) Programadorespodemintroduzirmudanasna implementao de um mtodo sem afetar o comportamento externo desse mtodo (interface) Objetosencapsulamseusatributos atributos de uma classe so acessveis apenas pelos mtodos da prpria classe outras classes s podem acessar os atributos de uma classe invocando os mtodos pblicos Restringeavisibilidadedoobjetomasfacilitaoreso, aumenta a legibilidade e manutenibilidade
Juliano Marcos Martins julianom@br.ibm.com
05/01/2008
13/55

Programao Orientada a Objetos I

Conceitos bsicos - Mensagem


omecanismoatravsdoqualosobjetossecomunicam, invocando as operaes desejadas

Especificaodeumaoperaodoobjeto
compostapor Seletor:

nomesimblicoquedescreveotipodaoperao
descreveOQUEoobjetoqueenviaquerquesejainvocado oobjetoreceptordamensagemcontmadescriode COMO a operao deveria ser executada Parmetros: argumentosqueumamensagempodeconterquefazparte da operao e requer uma ordem nica
Juliano Marcos Martins julianom@br.ibm.com
05/01/2008
14/55

Programao Orientada a Objetos I

Conceitos bsicos Mensagem e mtodos

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

15/55

Programao Orientada a Objetos I

Conceitos bsicos - Polimorfismo


Permite a criao de vrias classes com interfaces idnticas, porm objetos e implementaes diferentes
Propriedade segundo a qual vrios mtodos podem exis ir com o mesmo nome mas com comportamento diferente

Ao receber uma mensagem para efetuar uma Operao, o objeto quem determina como a operao deve ser efetuada
Exemplos

O operador + pode pontosflutuantes ou strings.

ser

usado

com

inteiros,

A operao mover pode atuar diferentemente nas classes Janela e PeadeXadrez.

A operao Calcular_Salrio atua diferentemente nas classes funcionario comissionado e funcionrio assalariado
Juliano Marcos Martins julianom@br.ibm.com
05/01/2008
16/55

Programao Orientada a Objetos I

Conceitos bsicos - Relacionamento


Objetospodemrelacionar-se um com o outro UmaPessoa pode possuir Carro, onde o relacionamento possuir define uma conexo especfica entre Pessoa e Carro Associao um relacionamento que um objeto precisa ter com outro(s) objeto(s), para cumprir suas responsabilidades

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

17/55

Programao Orientada a Objetos I

Conceitos bsicos - Herana


Mecanismoquepermitedefinirumanovaclasse (subclasse) a partir de uma classe j existente (superclasse) Asubclasseherdaascaractersticascomunsda superclasse (atributos e mtodos) A subclasse pode adicionar novos atributos e mtodos, como tambm reescrever mtodos herdados Quandoumamensagemenviadaparaumobjeto: A procura do mtodo correspondente comea pela classe do objeto Se o mtodo no for encontrado, a procura continua na superclasse

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

18/55

Programao Orientada a Objetos I

Conceitos bsicos - Herana


A Herana pode ser de dois tipos: Herana Simples: quando uma classe subclasse de somente uma superclasse Herana Mltipla: quando uma classe subclasse de vrias superclasses e, conseqentemente, herda as caractersticas de cada uma delas

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

19/55

Programao Orientada a Objetos I

Conceitos bsicos - Herana

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

20/55

Welcome

2006 IBM Corporation

21

Programao Orientada a Objetos I

Exerccios
1- Como voc define OO? 2- Faa uma analogia entre o desenvolvimento estruturado e OO. 3- Cite algumas vantagens de OO. 4- Defina Objeto 5- Defina Classe 6- Defina atributos 7- Defina mensagens 8- Como voc define Polimorfismo e Encapsulamento? 9- Qual a diferena entre associao e Herana? 10- Quais os dois tipos de herana? 11- Desenhe as seguintes classes com seus atributos e mtodos: a) Produtos b) Aluno c) Pessoa e Pessoa Fsica (onde pessoa fsica uma subclasse de pessoa)

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

22/55

JAVA

Autor: Juliano Marcos Martins

julianom@br.ibm.com

05/01/2008

Programao Orientada a Objetos I

Mtodos de implementao
Compilao - programa traduzido para linguagem de
mquina (C, PASCAL, COBOL, Ada, etc.);

Interpretao

programa fonte interpretado por outro

programa que entende o programa fonte (sh, awk, LISP, ML, PROLOG, Smalltalk, etc.);

Implementao hbrida Misto de ambos (Perl, Java,


etc.)

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

Programao Orientada a Objetos I

Compilao

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

Programao Orientada a Objetos I

Compilao

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

Programao Orientada a Objetos I

Interpretao
Programafonte

Dados de entrada

Interpretador

Resultados

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

Programao Orientada a Objetos I

Sistema de implementao Hbrido

x.java

javac x.java java x

x.class

JAVA VIRTUAL MACHINE

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

Programao Orientada a Objetos I

A plataforma JAVA

Java multiplataforma devido a sua JVM!

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

Programao Orientada a Objetos I

Conceitos bsicos JAVA - Edies

JAVA SE Standard Edition, indicada para iniciarmos nosso trabalho com JAVA, contem as APIs padro JAVA EE Enterprise Edition, indicada para desenvolvimento de aplicativos corporativos com suporte a tecnologia tal como EJB.

JAVA ME Micro Edition: para desenvolvimento em dispositivos mveis ou embarcados (Celulares, Geladeiras, etc)
Juliano Marcos Martins julianom@br.ibm.com
05/01/2008
30/55

Programao Orientada a Objetos I

Conceitos bsicos JAVA

JDK x JRE Java Development Kit: Contm todo o instrumental necessrio para desenvolvimento JAVA Java Runtime Enviroment: Basicamente contm a Java Virtual Machine, o que necessrio para rodar aplicaes Java. Download http://www.java.com/pt_BR/ Instalando e configurando
http://jmmwrite.wordpress.com/2008/07/14/preparacao-de-um-ambientede-desenvolvimento-java-v2/

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

31/55

Programao Orientada a Objetos I

Conceitos bsicos JAVA

JAVAC: Java compiler JAVA: Interpretador Java Ambiente de desenvolvimento (IDE) Eclipse, Rational Application Developer, etc

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

32/55

Programao Orientada a Objetos I

Conceitos bsicos Hands on JAVA!!!


public class AloMundo {

public static void main(String[] args) { System.out.println("Alo Mundo!!!"); }


}

Para rodar: javac AloMundo.java java AloMundo


Juliano Marcos Martins julianom@br.ibm.com
05/01/2008
33/55

Programao Orientada a Objetos I

1- Definio e implementao de classes


As classes automvel e livro
Criao de uma classe Atributos e mtodos

Visibilidade
Implementao das classes automvel e livro

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

34/55

Programao Orientada a Objetos I

A Classe automvel

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

35/55

Programao Orientada a Objetos I

A Classe Livro

Livro Titulo Autor Tombo

Editora
Empresta Devolve

Reserva
Cadastra Consulta

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

36/55

Programao Orientada a Objetos I

Declarando uma Classe


Definio de uma classe:
[modificadores] class NomeDaClasse
{ .... }

Exemplos:
public class Automovel { }
public class Livro { } public class Aluno

{
} Juliano Marcos Martins julianom@br.ibm.com
05/01/2008
37/55

Programao Orientada a Objetos I

Declarando Atributos de Classe


Definio de um Atributo:
[modificadores] tipo nomeDoAtributo [ = inicializao ];

Exemplos:
private int numero;
public String tamanhoMaximo = 15; private String nome = Maria da Silva; double raio = 6.5; Object o = new Object();

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

38/55

Programao Orientada a Objetos I

Declarando Mtodos
Definio de um mtodo:
[modificadores] retorno nomeDoMetodo ( [Argumentos] ) [ throws Exees ] { ... [ return varRetorno; ] }

Exemplos:
private void obtemNumeroAlunosTurma ( long codigoTurma ) { ... } public String getNomeAluno( int codigoAluno ) { ... } public void insereAluno ( String nomeAluno ) throws Exception { ... }

public long getNumeroInstancias () { ... }

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

39/55

Programao Orientada a Objetos I

Exemplo de Classe

public class Aluno { String nomeAluno; int codigoAluno; public String getNomeAluno() { return nomeAluno; } public void setNomeAluno( String param ) { nomeAluno = param; } public int getCodigoAluno() { return codigoAluno; } public void setCodigoAluno( int param ) { codigoAluno = param; } }

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

40/55

Programao Orientada a Objetos I

Construtor da Classe
Para que um objeto exista necessrio constru-lo, isto , dizer para a
JVM que necessrio espao de memria para criao do objeto.

Para construir um objeto usa-se o construtor da classe.


Aluno o1 = new Aluno(); Object o2 = new Object();

Toda classe possui, por default, um construtor padro: pblico e sem


argumentos.

O construtor default somente criado quando nenhum outro construtor


for definido pelo programador.

Uma classe pode ter quantos construtores desejar.

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

41/55

Programao Orientada a Objetos I

Declarando Contrutores da Classe


Definio de um mtodo:
[modificador] nomeDaClasse ( [Argumentos] ) [ throws Exees ] { ... }

Exemplos:
public Turma () { ... } public Turma ( long codigoTurma ) { ... } public Curso( int codigoCurso ) throws Exception { ... }

public Curso ( String nomeCurso, int codigoCurso ) { ... }


public Automovel() {...} public Automovel(String marca, String Dono) {...}

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

42/55

Programao Orientada a Objetos I

Visibilidade/Modificadores
Cada um dos elementos que constituem uma classe
possui uma visibilidade (Staa, p. 296);

Visibilidadeacapacidadedeumobjetopoderverou
de ter referncia a outro objeto (Larman, p. 246);

O conceito de visibilidade tambm conhecido como


modificadores de acesso.

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

43/55

Programao Orientada a Objetos I

Visibilidade
Os tipos de visibilidade que podem ser determinados
em uma classe para atributos e operaes so:

+ public: os elementos so acessveis por todas as


classes;

# protected: os elementos so acessveis por


subclasses, ou pela prpria classe;

private: os elementos so acessveis somente pela


prpria classe;

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

44/55

Programao Orientada a Objetos I

Visibilidade
Atributos: somente deveriam ser acessados pelos
mtodos da classe a que pertence;

Operaes:
Pblicas (interface); Privadas (internas classe).

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

45/55

Programao Orientada a Objetos I

Classe automvel
public class Automovel{ public String proprietario; //Atributos private String marca; private String placa; private int ano; public Automovel (String proprietario, String marca, String placa, int ano){ this.proprietario = proprietario; this.marca = marca; this.placa = placa; this.ano = ano; }; public void transferirProprietario(String novoProprietario){ proprietario = novoProprietario; }; public void mudarPlaca (String novaPlaca){ placa = novaPlaca; }; }
Juliano Marcos Martins julianom@br.ibm.com
05/01/2008
46/55

Programao Orientada a Objetos I

Classe livro
public class Livro{ private String nome;

private int tombo;


private String autor; public Livro (String autor, int tombo, String nome){ this.nome = nome; this.tombo = tombo; this.autor = autor; }; public String retornaNomeLivro(int tombo){ return nome; }
Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

47/55

Programao Orientada a Objetos I

2- Criao de Objetos

Instanciao (Criao de objetos como instncias de classes)

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

48/55

Programao Orientada a Objetos I

Criando um objeto
Temos uma classe em Java, que especifica o que todo objeto dessa classe deve ter. Mas como usla?

Alm dessa classe ainda teremos o Programa.java, e a partir dele que iremos utilizar a classe
automvel. classe:

Para criar (construir, instanciar) um Automvel, basta usar a palavra chave new seguida do nome da
class Programa {
public static void main(String[] args) { new Automovel();

} }

O cdigo acima cria um objeto do tipo Automvel, mas como acessar esse objeto que foi criado?
Precisamos ter alguma forma de nos referenciar a esse objeto. Precisamos de uma varivel:
class Programa { public static void main(String[] args) { Automovel meu_carro; meuCarro = new Automovel(); } }

Automovel meuCarro = new Automovel();


05/01/2008
49/55

Juliano Marcos Martins julianom@br.ibm.com

Programao Orientada a Objetos I

Instanciao de um objeto da classe automvel


public class Automovel{ public String proprietario; //Atributos private String marca; private String placa; private int ano; public Automovel (String proprietario, String marca, String placa, int ano){//construtor this.proprietario = proprietario; this.marca = marca; this.placa = placa; public class Programa { this.ano = ano; public static void main(String[] args){ }; Automovel carro1 = new Automovel("Fulano","Volks","BJM3434",1999); public void transferirProprietario(String novoProprietario){//mtodo para alterao de proprietrio proprietario = novoProprietario; System.out.println(carro1.proprietario); }; System.out.println("Alterando proprietrio"); } carro1.transferirProprietario("Beltrano"); System.out.println(carro1.proprietario); }; }
Juliano Marcos Martins julianom@br.ibm.com
05/01/2008
50/55

Programao Orientada a Objetos I

Repassando:
Cria-se a classe, atributos/mtodos e seu construtor
public carros(String modelo) { this.modelo = modelo; }

Definio do construtor

Instancia-se o objeto

Uso do construtor

Automovel carro1 = new Automovel(GOL");

Utiliza-se seus mtodos


carro1.transferirProprietario("Beltrano");

Invocando mtodos

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

51/55

Welcome

2006 IBM Corporation

52

Programao Orientada a Objetos I

Um pouco de prtica
Sistema de biblioteca
Diagrama de classes
Aluno (contrutor, etc) Livro (Emprestar livro, consultar emprestimo, etc) Editora

Implementao em JAVA
Implementando as classes Implementando um programa que instancia objetos

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

53/55

Programao Orientada a Objetos I

Exerccios
Crie um diagrama de classes para um sistema de
Estoque

Implemente em JAVA todas as classes e um programa


que instancie objetos do seu sistema

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

54/55

Programao Orientada a Objetos I

Nomundoreal

Sistema de controle de estoque Classe Produtos Vetor de produtos

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

55/55

Programao Orientada a Objetos I

Links interessantes
http://javaalmanac.com/
http://java.sun.com/javase/downloads/index.jsp - Previous
Releases

Juliano Marcos Martins julianom@br.ibm.com

05/01/2008

56/55

Programao Orientada a Objetos I

Anexo 1: Modificadores de Classes


The declaration may include class modifiers, which affect how the class can be used.
Examples: public, abstract, final

public classes
May be accessed by any java code that can access its containing package Otherwise it may be accessed only from within its containing package

abstract classes
Can contain anything that a normal class can contain Variables, methods, constructors

Provide common information for subclasses


Cannot be instantiated

A class is declared final if it permits no subclasses.


Juliano Marcos Martins julianom@br.ibm.com
05/01/2008
57/55

Você também pode gostar