Conceitos de Orientação a Objetos Abstração de dados Objetos Classes Abstração de dados Uma abstração descreve as características essenciais de uma entidade que a distingüe de todos os outros tipos de entidades. Tipo Abstrato de Dados (TAD) proporciona uma abstração sobre uma estrutura de dados em termos de uma interface bem definida. Abstração de dados Vantagens de TADs são: Código e estrutura de dados estarem armazenados num mesmo lugar, cria um programa bem estruturado, legível e facilmente modificável. Ocultamento da informação proporciona um nível de proteção contra acessos inesperados à estrutura de dados. A noção de tipos abstratos de dados influenciou fortemente o modelo de objetos. Objetos Um objeto é uma entidade que possui um estado que pode ser alterado ao longo do seu tempo de vida. O estado de um objeto pode ser alterado por outro através do envio de mensagens. O envio de uma mensagem por um objeto implica na execução de uma operação correspondente da interface pública do objeto receptor. Objetos I N T E R F A C E Métodos Dados Objetos Interface pública Estado privado Objetos Um objeto possui: Um estado Um comportamento bem definido (formado pelo conjunto de operações da sua interface pública) Uma identidade única (propriedade que o distingüe de outros objetos) Classes Classe é a descrição de um molde que especifica as propriedades e o comportamento para um conjunto de objetos similares. Todo objeto é instância de apenas uma classe. Atributos e operações são parte da definição de uma classe. Classes Classe Atributos Operações Objetos Documento autor dataDeChegada imprimir( ) editar( ) d1: Documento d2: Documento Classes Operação Operação Método Método Atributos Operação Método Operação Método Declaração de uma classe Java class Documento { private int dataDeChegada = 0; private String autor; public int devolveData( ); public String devolveAutor( ); public imprimir( ); public editar( ); } Métodos em Java int devolveData() { return dataDeChegada; } Criação de objetos em Java Documento d1; d1 = new Documento(); d1.imprimir();