Академический Документы
Профессиональный Документы
Культура Документы
O que um objeto?
Um objeto uma entidade (fsica, conceitual ou do domnio de algum problema) que tem: identidade estado e comportamento Caractersticas de Smalltalk, resumidas por Allan Kay: Tudo (em um programa OO) so objetos Um programa um conjunto de objetos enviando mensagens uns aos outros O espao (na memria) ocupado por um objeto consiste de outros objetos Todo objeto possui um tipo (que descreve seus dados) Objetos de um determinado tipo podem receber as mesmas mensagens
4
Objetos
Em uma linguagem OO pura Uma varivel um objeto Um programa um objeto Um procedimento um objeto Um objeto composto de objetos, portanto Um programa (objeto) pode ter variveis (objetos que representam seu estado) e procedimentos (objetos que representam seu comportamento) Analogia: abstrao de um telefone celular composto de outros objetos, entre eles bateria e botes A bateria um objeto tambm, que possui pelo menos um outro objeto: carga, que representa seu estado Os botes implementam comportamentos
5
Objetos
Em uma linguagem orientada a objetos pura Um nmero, uma letra, uma palavra, uma valor booleano, uma data, um registro, um boto da interface so objetos Em Java, objetos so armazenados na memria de heap e manipulados atravs de uma referncia (varivel), guardada na pilha Tm identidade (a referncia) Tm estado (seus atributos) Tm comportamento (seus mtodos) Valores unidimensionais (tipos primitivos) no so objetos em Java Nmeros, booleanos, caracteres so armazenados na pilha Tm apenas identidade (nome da varivel) e estado (valor literal armazenado na varivel); - dinmicos; + rpidos
6
Classes
Classes definem lgica esttica Relacionamentos entre classes so estticos, definidos em tempo de programao e no mudam durante a execuo Relacionamentos entre objetos so dinmicos e podem mudar. O funcionamento da aplicao reflete a lgica de relacionamento entre os objetos, e no entre as classes Classes no existem no contexto de execuo Uma classe representa vrios objetos que ocupam espao na memria, mas ela no existe nesse domnio A classe tem papel na criao dos objetos, mas as mensagens so trocadas entre os objetos A classe a planta, o objeto a casa construda. Muitas casas podem ser feitas a partir da mesma planta, mas cada uma preserva sua prpria identidade
9
10
Membros de instncia
Cada objeto, quando criado, aloca espao para eles S podem ser usados atravs de objetos
Exemplo
Atributos de instncia: cada objeto poder armazenar valores diferentes nessas variveis. Procedimento de inicializao de objetos (Construtor): cdigo executado aps a criao de cada novo objeto. Cada objeto ter um nmero diferente. Mtodo de instncia: s possvel cham-lo se for atravs de um objeto. Atributos estticos: no preciso criar objetos para us-los. Todos os objetos os compartilham. Procedimento de inicializao esttico: cdigo executado uma nica vez, quando a classe carregada. O arquiteto ser um s para todas as casas: ou Z ou Og.
13
Construtores
So procedimentos executados na criao do objeto, uma nica vez Tm o mesmo nome da classe. So similares a mtodos, mas no tm tipo de retorno. No fazem parte da definio do tipo do objeto (interface)
class Conta { String numero; double saldo; Conta(String n) { numero = n; saldo = 0; } void creditar(double valor) {saldo += valor; } void debitar(double valor) {saldo -= valor; } }
14
15
16
Ao interagir com um objeto, levamos em conta a interface (o servio) e no a implementao. Chamamos a isso de Abstrao.
17
Resumo
Os componentes de uma classe, em Java, podem pertencer a dois domnios, que determinam como os mesmos sero usados
Domnio da classe: existem independentemente de existirem objetos ou no mtodos static, blocos static, atributos static e interface dos construtores de objetos Domnio do objeto: mtodos e atributos no declarados como static (definem o tipo ou interface que um objeto possui), e contedo dos construtores Construtores so usados apenas para construir objetos No so mtodos (no declaram tipo de retorno) Ponte" entre dois domnios: so chamados uma vez antes do objeto existir (domnio da classe) e executados no domnio do objeto criado
Desenvolvendo um exemplo
21
22
Atributos ou campos
Atributos armazenam valores para um objeto Eles tambm so conhecidos como variveis de instncia Atributos definem o estado de um objeto
Public class TicketMachine { private int price; private int balance; private int total; Construtor e mtodos omitidos }
Modificador de visibilidade
Tipo
Nome da varivel
23
Mtodos
public class TicketMachine { Atributos omitidos public TicketMachine(int ticketCost){ } public int getPrice(){ return price; } public int getBalance(){ return balance; } public void insertMoney(int amount) { } public void printTicket(){ } }
24
Construtores
Construtores inicializam um objeto Tm o mesmo nome de sua classe Inicializam os atributos Freqentemente recebem valores de parmetros externos classe
public class TicketMachine { public TicketMachine(int ticketCost) { price = ticketCost; balance = 0; total = 0; } }
25
Mtodos de acesso
Mtodos implementam o comportamento dos objetos Mtodos de acesso fornecem informaes sobre um objeto A classe TicketMachine possui os seguintes mtodos:
getPrice, getBalance, insertMoney, printTicket
Mtodos tm uma estrutura que consiste em um cabealho e um corpo O cabealho define a assinatura do mtodo: public int getPrice() O corpo engloba as instrues do mtodo
26
Mtodos de acesso
Modificador de visibilidade Tipo de retorno
return price; }
Instruo de retorno
27
Mtodos modificadores
Utilizados para modificar o estado de um objeto
Geralmente contm instrues de atribuio Geralmente recebem parmetros Geralmente seu tipo de retorno void
Modificador de visibilidade Tipo de retorno (void) Nome do mtodo Parmetro
Variveis locais
Atributos so um tipo de varivel:
armazenam valores por toda a vida de um objeto so acessveis por meio da classe (seu escopo) uma cpia do atributo por objeto instanciado
29
Variveis locais
varivel local
30
Resumindo
O corpo das classes pode conter atributos (campos), construtores e mtodos Campos armazenam o estado de um objeto Construtores inicializam objetos Mtodos implementam o comportamento dos objetos Campos, parmetros e variveis locais so variveis Campos persistem pelo tempo de vida de um objeto Parmetros so utilizados para receber valores em um construtor ou mtodo Variveis locais so utilizadas para armazenamento temporrio de curta durao
31
Mtodos estticos
Mtodos estticos (mtodos de classe)
Aplicam-se classe como um todo No necessrio criar um objeto para utiliz-los So chamados especificando-se o nome da classe onde o mtodo declarado:
NomeClasse.nomeMtodo()
Atributos estticos
Campos estticos (variveis de classe)
A mesma cpia compartilhada entre todas as instncias da classe (objetos) Uma espcie de varivel global da classe
Constantes
Declaradas com a palavra-chave final. No pode ser alterada depois da inicializao Classe Math:
Campos Math.E e Math.PI so final static
33
A classe Math
34
Um relgio digital
1.0
Abstrao e modularizao
Abstrao a habilidade de ignorar detalhes sobre as partes para concentrar a ateno no nvel mais alto de um problema Modularizao o processo de dividir um todo em partes bem definidas, que podem ser construdas e examinadas separadamente e que interagem de uma maneira prdeterminada
36
Implementao NumberDisplay
public class NumberDisplay { private int limit; private int value;
Construtor e mtodos omitidos
38
Implementao ClockDisplay
public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes;
Construtor e mtodos omitidos
Diagrama de objetos
40
Diagrama de classes
41
objeto
STACK HEAP
Uma referncia para o objeto armazenada na varivel int i;
32
STACK
tipo primitivo
42
b = a;
int a; int b;
32
32
43
NumberDisplay (1)
// Construtor public NumberDisplay(int rollOverLimit) { limit = rollOverLimit; value = 0; }
NumberDisplay (2)
public String getDisplayValue() { if(value < 10) return "0" + value; else return "" + value; }
45
47
parmetro real
48
49
50
possvel inicializar um objeto ClockDisplay de duas maneiras diferentes - sobrecarga de construtor ou mtodo
51
A palavra-chave this
public class MailItem { private String from; private String to; private String message; public MailItem(String from, String to, String message) { this.from = from; this.to = to; this.message = message; } }
52
Tipos de relacionamentos
Objetos no so ilhas isoladas. Pelo contrrio, podem existir diferentes tipos de relacionamentos entre os objetos ao longo do ciclo de vida do sistema Reuso de classe: fornece menos flexibilidade Herana pura (sobreposio): b a Herana com extenso: b um tipo de a Uso e reuso de objetos: fornece mais flexibilidade Associao: a usado por b O grau de coeso Agregao: a parte de b entre os objetos foi colocado do mais Composio: a parte essencial de b
fraco para o mais forte
54
Associao
Representa relacionamentos mais fortes entre instncias de classes (objetos)
public class Empregado { private String matricula; private int anosServico; private String sobrenome; private String nome; private Endereco endereco; . . . } public class Endereco { . . . }
55
Agregao
A agregao um relacionamento do tipo todo/parte:
usado para mostrar uma relao de incluso lgica, ou seja, um todo formado por partes Embora as partes possam existir independentemente do todo, sua existncia basicamente para formar o todo Exemplo: um correntista precisa de pelo menos uma conta e um endereo. Sem uma conta no se pode dizer que ele correntista A agregao frequentemente representada como uma simples associao
56
Composio
Uma composio um tipo de agregao. A diferena que na composio o objeto composto faz parte de somente um relacionamento (um todo), enquanto que na agregao isso no obrigatrio Exemplo 1: um trem formado por uma locomotiva e vages. Uma locomotiva ainda tem um farol Exemplo 2: um Quadrado formado por dois pontos e um Crculo tem um ponto e um raio. Cada uma dessas formas geomtricas ainda tem um estilo
57
Um trem no existe sem a locomotiva e os vages. Por sua vez, os dois ltimos at assumem uma nova identidade ao formarem o trem Uma locomotiva possui um farol (mas no vai deixar de ser uma locomotiva se no o tiver) Um trem usa uma estrada de ferro (ela no faz parte do trem, mas ele depende dela)
58
Composio X Agregao
A relao de Ponto com Circulo e Quadrado uma composio, pois os mesmos no podem ser compartilhados Enquanto que o mesmo objeto de Estilo pode ser compartilhado por Circulo e Ponto (agregao)
59
Composio X Agregao
Traduo de composio e agregao na linguagem Java
public class Quadrado { // p1 e p2 so composio - new // estilo agregao - atribuio private Ponto p1, p2; private Estilo estilo; public Quadrado(int x1, int y1, int x2, int y2, Estilo e){ p1 = new Ponto(x1, y1); p2 = new Ponto (x2, y2); estilo = e; } }
60
Dependncia
Composio Associao
61