Orientação a Objetos: Encapsulamento e Classificação Alcides Calsavara
Sistema Orientado a Objetos Um sistema orientado a objetos é uma coleção de objetos que interagem entre si. Um objeto interage com outro através de uma mensagem que causa um estímulo.
Interação entre Objetos
Objeto Um objeto possui um comportamento e um estado : o comportamento é forma como reage a estímulos o estado modifica-se de acordo com o comportamento
Comportamento e Estado
Encapsulamento Separação dos aspectos externos de um objeto dos seus detalhes internos de implementação O estado de um objeto somente é acessível a partir da implementação de seu comportamento
Guarantia de Encapsulamento
Comportamento O comportamento de um objeto é definido por um conjunto de métodos Um estímulo causa a execução de um método Um estímulo pode ser uma invocação explícita de um método ou um evento relevante para o objeto
Execução de Métodos invocação evento e m ( ) m ( ) m ( )
Estado O estado de um objeto é composto por um conjunto de valores de atributos
Classe Uma classe descreve um conjunto de objetos: as instâncias da classe Uma classe descreve o comportamento e a composição do estado de todos os seus objetos Cada classe deve ter um nome distinto
Classes e Objetos
Tipos Um tipo pode ser primitivo ou uma classe Uma classe é um tipo abstrato de dados (ADT)
Tipos Primitivos Os tipos primitivos incluem: números inteiros: byte, short, int, long números reais: float, double valores lógicos: boolean caracteres: char
Classes de Bibliotecas Exemplos: String Applet Button System
Método Cada método possui uma assinatura, um tipo de retorno (primitivo ou classe) e uma implementação A assinatura de um método é composta por um nome e uma lista de parâmetros Cada parâmetro tem um nome e um tipo (primitivo ou classe)
Atributo Cada atributo tem um nome e um tipo (primitivo ou classe) Um objeto que possui um atributo cujo tipo é uma classe é um objeto composto, pois contém outro objeto
Atributos em Classes e Objetos boolean b int k int x String s A B x =10 char[] v b=true k=7 s= v=Paris String
Visibilidade e Encapsulamento Um atributo deve preferencialmente ser qualificado como privado (private) Um método pode ser tanto qualificado como privado como público (public) O conjunto de métodos públicos de uma classe define a sua inteface
Estrutura de uma Classe Uma classe contém um conjunto de atributos e um conjunto de métodos os atributos devem ter nomes distintos os métodos devem ter assinaturas distintas Cada objeto possui um conjunto próprio de valores dos atributos e o conjunto de métodos da classe
Classe e Encapsulamento Os valores dos atributos de um objeto somente são acessíveis a partir dos seus métodos
Criação de Objetos Método construtor Operador new toda classe tem um ou mais métodos construtores um método construtor tem o mesmo nome da classe e não tem retorno Operador new a criação de um novo objeto se dá com a invocação de um método construtor através do operador new
Objeto e Referência Todo objeto é criado dinamicamente pelo operador new e tem a classe (tipo) especificada após esse operador Um objeto pode ser referenciado e ter seus métodos invocados Um objeto é eliminado quando não mais é referenciado
Classe com Múltiplos Construtores Cada construtor deve ter uma assinatura própria Um construtor pode invocar outro através do operador this O operador this também pode ser usado para resolver ambigüidade quando há coincidência de nomes entre parâmetro e atributo
Qualificador static Em um atributo: indica que o atributo tem uma única ocorrência para todas as instâncias da classe Em um método: indica que o método pode ser invocado indendentemente de uma instância da classe um método static acessa apenas atributos static
Qualificador final em atributos O qualificador final em um atributo indica que este tem um valor constante
Finalização de um atributo - Exemplo class Geometria { public static final float PI = 3.1416; private final String PROMPT = "Geom>"; ... }