05/01/2008 Programação Orientada a Objetos usando JAVA Autor: Juliano Marcos...
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 [email protected]
Programação Orientada a Objetos I
2/55 Juliano Marcos Martins – [email protected] 05/01/2008
Programação procedural
Programação Orientada a Objetos I
3/55 Juliano Marcos Martins – [email protected] 05/01/2008
Introdução a Objetos
Programação Orientada a Objetos I
4/55 Juliano Marcos Martins – [email protected] 05/01/2008
Introdução a Objetos
Programação Orientada a Objetos I
5/55 Juliano Marcos Martins – [email protected] 05/01/2008
Programação Orientada a Objetos I
6/55 Juliano Marcos Martins – [email protected] 05/01/2008
Programação Orientada a Objetos I
7/55 Juliano Marcos Martins – [email protected] 05/01/2008
Conceitos básicos - Abstração
Carro, Livro, Aluno, etc
Programação Orientada a Objetos I
8/55 Juliano Marcos Martins – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 05/01/2008
Conceitos básicos - Represetação
Programação Orientada a Objetos I
13/55 Juliano Marcos Martins – [email protected] 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 – [email protected] 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 – [email protected] 05/01/2008
Conceitos básicos – Mensagem e métodos
Programação Orientada a Objetos I
16/55 Juliano Marcos Martins – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 05/01/2008
Conceitos básicos - Herança
© 2006 IBM Corporation 21
Welcome
Programação Orientada a Objetos I
22/55 Juliano Marcos Martins – [email protected] 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)
Programação Orientada a Objetos I
Juliano Marcos Martins – [email protected] 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 – [email protected] 05/01/2008
InterpretaçãoPrograma-fonte
Interpretador
Resultados
Dados de entrada
Programação Orientada a Objetos I
Juliano Marcos Martins – [email protected] 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 – [email protected] 05/01/2008
A plataforma JAVA
Java é multiplataforma devido a sua JVM!
Programação Orientada a Objetos I
30/55 Juliano Marcos Martins – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 05/01/2008
A Classe automóvel
Programação Orientada a Objetos I
36/55 Juliano Marcos Martins – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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 – [email protected] 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.