05/01/2008 Programação Orientada a Objetos usando JAVA Autor: Juliano Marcos...

Post on 16-Apr-2015

110 views 0 download

Transcript of 05/01/2008 Programação Orientada a Objetos usando JAVA Autor: Juliano Marcos...

05/01/2008

Programação Orientada a Objetos

usando JAVA

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

Programação Orientada a Objetos I

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

Programação procedural

Programação Orientada a Objetos I

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

Introdução a Objetos

Programação Orientada a Objetos I

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

Introdução a Objetos

Programação Orientada a Objetos I

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

Programação Orientada a Objetos I

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

Programação Orientada a Objetos I

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

Conceitos básicos - Abstração

Carro, Livro, Aluno, etc

Programação Orientada a Objetos I

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

Conceitos básicos - Objeto– Tudo em OO é OBJETO

– Definição (mundo do software)

• “Qualquer coisa, real ou abstrata, a respeito da qual armazenamos dados e métodos que os manipulam” (Martin e Odell, 1995)

• Abstração de uma entidade do mundo real de modo que essa entidade possua várias características e serviços

• Exemplos: objeto casa, objeto cachorro

Programação Orientada a Objetos I

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

Conceitos básicos - Objeto Resumindo:

– OBJETO: Pacote de informações (atributos) e a descrição de suas operações (métodos), de modo que elas são intrínsecas ao seu domínio e este é formado pelos elementos que o caracterizam

– Exemplo:

• Objeto: Pessoa

• Atributos: Nome, Data de Nascimento, Cor

• Métodos: Acordar, Comer, Beber Dormir

Programação Orientada a Objetos I

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

Conceitos básicos - Métodos• Métodos ou Operações: podem mudar a estrutura de dados

dos objetos

– Métodos são invocados por mensagens

– Cada objeto possui seu próprio conjunto de métodos

• Definições:

– São procedimentos definidos e declarados que atuam sobre um objeto

– Descrição de uma seqüência de ações a serem executadas por um objeto

– Por meio dos métodos que especifica-se a um objeto COMO FAZER alguma coisa

– São intrínsecos aos objetos e não podem ser separados

Programação Orientada a Objetos I

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

Conceitos básicos - ClasseClasse

– abstração de um conjunto de objetos similares do mundo real

– conjunto de objetos que possuem propriedades semelhantes (ATRIBUTOS), o mesmo comportamento (MÉTODOS), os mesmos relacionamentos com outros objetos e a mesma semântica

• Todo objeto é uma instância de uma Classe

– Todas as instâncias de uma classe têm valores próprios para os atributos especificados na classe

– Os objetos representados por determinada classe diferenciam-se entre si pelos valores de seus atributos

• Exemplo: – Classe de espécies em Zoologia

Programação Orientada a Objetos I

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

Conceitos básicos - Represetação

Programação Orientada a Objetos I

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

Conceitos básicos - Encapsulamento• Característica que visa esconder detalhes de

implementação

• É alcançado em OO, visto que o objeto, quando implementado, possui uma parte privada (atributos) e uma parte pública (métodos)

• Programadores podem introduzir mudanças na implementação de um método sem afetar o comportamento externo desse método (interface)

• Objetos encapsulam seus atributos

– atributos de uma classe são acessíveis apenas pelos métodos da própria classe

– outras classes só podem acessar os atributos de uma classe invocando os métodos públicos

• Restringe a visibilidade do objeto mas facilita o reúso, aumenta a legibilidade e manutenibilidade

Programação Orientada a Objetos I

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

Conceitos básicos - Mensagem• É o mecanismo através do qual os objetos se comunicam,

invocando as operações desejadas

• Especificação de uma operação do objeto

• É composta por

– Seletor:

• nome simbólico que descreve o tipo da operação

• descreve O QUE o objeto que envia quer que seja invocado

• o objeto receptor da mensagem contém a descrição de COMO a operação deveria ser executada

– Parâmetros:

• argumentos que uma mensagem pode conter que faz parte da operação e requer uma ordem única

Programação Orientada a Objetos I

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

Conceitos básicos – Mensagem e métodos

Programação Orientada a Objetos I

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

Conceitos básicos - Polimorfismo• Permite a criação de várias classes com interfaces

idênticas, porém objetos e implementações diferentes

• Propriedade segundo a qual vários métodos podem exis ir com o mesmo nome mas com comportamento diferente

– Ao receber uma mensagem para efetuar uma Operação, é o objeto quem determina como a operação deve ser efetuada

• Exemplos

– O operador “+” pode ser usado com inteiros, pontosflutuantes ou strings.

– A operação mover pode atuar diferentemente nas classes Janela e PeçadeXadrez.

– A operação Calcular_Salário atua diferentemente nas classes funcionario comissionado e funcionário assalariado

Programação Orientada a Objetos I

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

Conceitos básicos - Relacionamento• Objetos podem relacionar-se um com o outro

• Uma Pessoa pode possuir Carro, onde o relacionamento possuir define uma conexão específica entre Pessoa e Carro

• Associação

– um relacionamento que um objeto precisa ter com outro(s) objeto(s), para cumprir suas responsabilidades

Programação Orientada a Objetos I

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

Conceitos básicos - Herança• Mecanismo que permite definir uma nova classe

(subclasse) a partir de uma classe já existente (super-classe)

• A subclasse herda as características comuns da superclasse (atributos e métodos)

– A subclasse pode adicionar novos atributos e métodos, como também reescrever métodos herdados

• Quando uma mensagem é enviada para um objeto:

– A procura do método correspondente começa pela classe do objeto

– Se o método não for encontrado, a procura continua na superclasse

Programação Orientada a Objetos I

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

Conceitos básicos - HerançaA Herança pode ser de dois tipos:

– Herança Simples: quando uma classe é subclasse de somente uma superclasse

– Herança Múltipla: quando uma classe é subclasse de várias superclasses e, conseqüentemente, herda as características de cada uma delas

Programação Orientada a Objetos I

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

Conceitos básicos - Herança

© 2006 IBM Corporation 21

Welcome

Programação Orientada a Objetos I

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

Exercícios

1- Como você define OO?2- Faça uma analogia entre o desenvolvimento estruturado e OO.3- Cite algumas vantagens de OO.4- Defina Objeto5- Defina Classe6- Defina atributos7- Defina mensagens8- Como você define Polimorfismo e Encapsulamento?9- Qual a diferença entre associação e Herança?10- Quais os dois tipos de herança?11- Desenhe as seguintes classes com seus atributos e métodos:

a) Produtosb) Alunoc) Pessoa e Pessoa Física (onde pessoa física é uma

subclasse de pessoa)

05/01/2008

JAVA

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

Programação Orientada a Objetos I

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

Métodos de implementação

Compilação - programa traduzido para linguagem de máquina (C, PASCAL, COBOL, Ada, etc.);

Interpretação – programa fonte interpretado por outro programa que entende o programa fonte (sh, awk, LISP, ML, PROLOG, Smalltalk, etc.);

Implementação híbrida – Misto de ambos (Perl, Java, etc.)

Programação Orientada a Objetos I

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

Compilação

Programação Orientada a Objetos I

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

Compilação

Programação Orientada a Objetos I

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

InterpretaçãoPrograma-fonte

Interpretador

Resultados

Dados de entrada

Programação Orientada a Objetos I

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

Sistema de implementaçãoHíbrido

JAVA VIRTUAL MACHINE

x.java

x.class

javac x.javajava x

Programação Orientada a Objetos I

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

A plataforma JAVA

Java é multiplataforma devido a sua JVM!

Programação Orientada a Objetos I

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

Conceitos básicos JAVA - Edições

• JAVA SE– Standard Edition, indicada para iniciarmos

nosso trabalho com JAVA, contem as APIs padrão

• 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 móveis ou embarcados (Celulares, Geladeiras, etc)

Programação Orientada a Objetos I

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

Conceitos básicos JAVA

• JDK x JRE– Java Development Kit: Contém todo o

instrumental necessário para desenvolvimento JAVA

– Java Runtime Enviroment: Basicamente contém a Java Virtual Machine, o que é necessário para rodar aplicações Java.

• Download http://www.java.com/pt_BR/

• Instalando e configurando– http://jmmwrite.wordpress.com/2008/07/14/preparacao-de-um-ambiente-

de-desenvolvimento-java-v2/

Programação Orientada a Objetos I

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

Conceitos básicos JAVA

• JAVAC: Java compiler

• JAVA: Interpretador Java

• Ambiente de desenvolvimento (IDE)–Eclipse, Rational Application Developer, etc

Programação Orientada a Objetos I

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

Conceitos básicos – Hands on JAVA!!!

public class AloMundo {

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

}

}

Para rodar:

javac AloMundo.java

java AloMundo

Programação Orientada a Objetos I

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

1- Definição e implementação de classes

As classes automóvel e livroAs classes automóvel e livro

Criação de uma classeCriação de uma classe

Atributos e métodosAtributos e métodos

VisibilidadeVisibilidade

Implementação das classes automóvel e livroImplementação das classes automóvel e livro

Programação Orientada a Objetos I

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

A Classe automóvel

Programação Orientada a Objetos I

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

A Classe LivroLivro

Titulo

Autor

Tombo

Editora

Empresta

Devolve

Reserva

Cadastra

Consulta

Programação Orientada a Objetos I

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

Declarando uma Classe Definição de uma classe:

[modificadores] class NomeDaClasse

{

....

}

Exemplos:

public class Automovel

{

}

public class Livro

{

}

public class Aluno

{

}

Programação Orientada a Objetos I

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

Declarando Atributos de Classe

Definição de um Atributo:

[modificadores] tipo nomeDoAtributo [ = inicialização ];

Exemplos:

private int numero;

public String tamanhoMaximo = 15;

private String nome = “Maria da Silva”;

double raio = 6.5;

Object o = new Object();

Programação Orientada a Objetos I

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

Declarando Métodos Definição de um método:

[modificadores] retorno nomeDoMetodo ( [Argumentos] ) [ throws Exeções ]

{

...

[ return varRetorno; ]

}

Exemplos:private void obtemNumeroAlunosTurma ( long codigoTurma ) { ... }

public String getNomeAluno( int codigoAluno ) { ... }

public void insereAluno ( String nomeAluno ) throws Exception { ... }

public long getNumeroInstancias () { ... }

Programação Orientada a Objetos I

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

Exemplo de Classepublic 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; }}

Programação Orientada a Objetos I

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

Construtor da Classe

Para que um objeto exista é necessário construí-lo, isto é, dizer para a

JVM que é necessário espaço de memória para criação 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 padrão: público e sem

argumentos.

O construtor default somente é criado quando nenhum outro construtor

for definido pelo programador.

Uma classe pode ter quantos construtores desejar.

Programação Orientada a Objetos I

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

Declarando Contrutores da Classe

Definição de um método:

[modificador] nomeDaClasse ( [Argumentos] ) [ throws Exeções ]

{

...

}

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) {...}

Programação Orientada a Objetos I

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

Visibilidade/Modificadores Cada um dos elementos que constituem uma classe

possui uma visibilidade (Staa, p. 296);

Visibilidade é a capacidade de um objeto poder “ver” ou de ter referência a outro objeto (Larman, p. 246);

O conceito de visibilidade também é conhecido como modificadores de acesso.

Programação Orientada a Objetos I

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

Visibilidade

Os tipos de visibilidade que podem ser determinados em uma classe para atributos e operações são:

+ public: os elementos são acessíveis por todas as classes;

# protected: os elementos são acessíveis por subclasses, ou pela própria classe;

– private: os elementos são acessíveis somente pela própria classe;

Programação Orientada a Objetos I

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

Visibilidade

Atributos: somente deveriam ser acessados pelos métodos da classe a que pertence;

Operações:

– Públicas (interface);

– Privadas (internas à classe).

Programação Orientada a Objetos I

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

Classe automóvel

public class Automovel{public String proprietario; //Atributosprivate 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; };}

Programação Orientada a Objetos I

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

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;

}

}

Programação Orientada a Objetos I

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

2- Criação de Objetos

• Instanciação (Criação de objetos como instâncias de Criação de objetos como instâncias de classes)classes)

Programação Orientada a Objetos I

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

Criando um objeto Temos uma classe em Java, que especifica o que todo objeto dessa classe deve ter. Mas como usá-

la?

Além dessa classe ainda teremos o Programa.java, e a partir dele é que iremos utilizar a classe automóvel.

Para criar (construir, instanciar) um Automóvel, basta usar a palavra chave new seguida do nome da classe:

class Programa {

public static void main(String[] args) {new Automovel();

}

}

O código acima cria um objeto do tipo Automóvel, mas como acessar esse objeto que foi criado? Precisamos ter alguma forma de nos referenciar a esse objeto. Precisamos de uma variável:

class Programa {

public static void main(String[] args) {

Automovel meu_carro;

meuCarro = new Automovel();

}

}

Automovel meuCarro = new Automovel();

Programação Orientada a Objetos I

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

Instanciação de um objeto da classe automóvel

public class Automovel{public String proprietario; //Atributosprivate 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; this.ano = ano; };

public void transferirProprietario(String novoProprietario){//método para alteração de proprietário proprietario = novoProprietario;

};}

public class Programa {

public static void main(String[] args){

Automovel carro1 = new Automovel("Fulano","Volks","BJM3434",1999);

System.out.println(carro1.proprietario);

System.out.println("Alterando proprietário");

carro1.transferirProprietario("Beltrano");

System.out.println(carro1.proprietario);

};

}

Programação Orientada a Objetos I

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

public carros(String modelo) { this.modelo = modelo;

}

Automovel carro1 = new Automovel(“GOL");

Uso do construtor

Definição do construtor

Repassando:

Cria-se a classe, atributos/métodos e seu construtor

Instancia-se o objeto

Utiliza-se seus métodos

carro1.transferirProprietario("Beltrano");

Invocandométodos

© 2006 IBM Corporation 52

Welcome

Programação Orientada a Objetos I

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

Um pouco de prática

Sistema de biblioteca– Diagrama de classes

• Aluno (contrutor, etc)• Livro (Emprestar livro, consultar emprestimo, etc)• Editora

Implementação em JAVA– Implementando as classes– Implementando um programa que instancia objetos

Programação Orientada a Objetos I

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

Exercícios

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

Programação Orientada a Objetos I

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

No “mundo real”

• Sistema de controle de estoque

• Classe “Produtos”

• Vetor de produtos

Programação Orientada a Objetos I

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

Links interessantes

http://javaalmanac.com/

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

Programação Orientada a Objetos I

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

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.