Conceitos de POO

Post on 04-Aug-2015

114 views 5 download

Transcript of Conceitos de POO

Programação Programação Orientada a Orientada a

ObjetosObjetos

Ricardo SobjakRicardo Sobjak

Introdução

• A ideia fundamental da programação orientada a objetos é que toda estrutura de dados utilizada em um programa deve estar intimamente associada às operações que realizam o acesso a ela, e vice-versa.

• O paradigma da OO é baseado na construção de sistemas a partir de componentes reutilizáveis, chamados de classes. Uma classe representa um conjunto de objetos similares.

As bases da OO• A tecnologia de objetos apresenta componentes chaves

que fundamentam a mudança de enfoque no processo de modelagem e desenvolvimento de aplicações, trazendo benefícios intrínsecos à filosofia [FURLAN, 1998].

• Programação estrutura: estruturas de controle (sequencial, condicional e repetitiva), modularização, tipos abstratos de dados

• POO: classes, objeto, herança (reutilização de código), polimorfismo

Mudança de Enfoque

• Enfoque tradicional de modelagem

– construção de sistemas de informação baseado na compreensão desse sistema como um conjunto de programas que, por sua vez, executam processos sobre os dados;

– programa = estrutura de dados + algoritmo.

Mudança de Enfoque

• Enfoque de modelagem por objetos

– observar o mundo como uma coletânea de objetos que interagem entre si, apresentam características próprias que são representadas pelos seus atributos (dados) e operações (processos);

– classe = atributos + operações.

ProgramaPrograma

Processos

Dados

ClasseClasse

Atributos

Operações

Enfoque baseado em sistema versusenfoque baseado em objeto

Foco em Sistema Foco em Objeto

Princípios básicos do Paradigma Orientado a Objetos

Abstração

• Uma forma de do ser humano lidar com a complexidade das entidades do mundo real;

• As pessoas normalmente constroem modelos mentais para representar das entidades do mundo real:– Os modelos são mais simples;– Possuem apenas o conhecimento relevante das

entidades do mundo real.

Abstração

• Definição:

“É o princípio de ignorar aspectos não relevantes de um assunto, segundo a perspectiva de um observador,

tornando possível uma concentração maior nos aspectos principais do mesmo.”

Abstração

Abstração

• Abstração de dados: defini um tipo de dados conforme as operações aplicáveis aos objetos deste tipo;

• Abstração de procedimentos: define um operação realizada por um objeto como uma entidade única;

Abstração x Representação

• Por um processo de representação este modelo conceitual pode, então, ser materializado segundo alguma convenção (um desenho, uma maquete, um texto, um diagrama, etc).

• No caso específico da informática, as representações mais convencionais são as linguagens de programação e as notações auxiliares na forma de diagramas e figuras.

Abstração x Representação

Encapsulamento

• No mundo real, um objeto pode interagir com outro sem conhecer o funcionamento interno;

Encapsulamento• Definição:

“Consiste na separação dos aspectos externos de um objeto, acessíveis por outros objetos, de seus

detalhes internos de implementação, que ficam ocultos dos demais objetos”

“A interface de comunicação de um objeto deve ser definida de forma a revelar o menos possível sobre o

seu funcionamento interno”

Encapsulamento

• Abstração e Encapsulamento são conceitos complementares:– Abstração: enfoca no comportamento observável de

um objeto;– Encapsulamento: enfoca a implementação que

origina esse comportamento (ocultamento das informações);

Encapsulamento

• Interface do objeto: operações que permitem utilizar o objeto;

• Os usuário têm o conhecimento das operações que o objeto realiza e não como elas estão implementadas.

Encapsulamento• Vantagens:– Facilita a reutilização de

objetos;– Garantir a estabilidade aos

sistemas;

Modularidade

• “É uma propriedade de sistemas decompostos em um conjunto de módulos coesos e fracamente acoplados”

• Modulariedade é crucial para se obter reusabilidade e extensibilidade;

• “Um objeto provê uma fronteira clara em torno de uma abstração e o encapsulamento e a modulariedade provêem barreiras em torno dessas abstrações”

Modularidade

Hierarquia

• “Um conjunto de abstrações frequentemente forma uma hierarquia e, pela identificação dessas hierarquias, é possível simplificar significativamente o entendimento sobre um problema”

• Hierarquia é um forma de arrumar as abstrações;

HierarquiaMaior

abstração

Menor abstração

CONCEITOS BÁSICOS DA ORIENTAÇÃO A OBJETOS

Conceitos básicos• Objetos:– Estado;– Comportamento;– Identidade.

• Classes e Instâncias;• Mecanismo de Estruturas:– Ligação e Associações;– Composição ou Agregação;– Generalização/Especialização

• Mensagens e Métodos.

Objetos• São os elementos que existem no mundo real e

interagem entre si;

• Objetos representam entidades abstratas ou concretas, exemplos:

– Entidade Física: caminhão, carro, bicicleta, televisão.

– Entidade Conceitual: processo químico, matrícula, reserva de avião.

– Entidade de Software: lista encadeada, arquivo.

Objetos

• Objetos possuem:

– Estados (informações);

– Comportamento: expresso por um número de operações para examinar ou alterar seu estado;

– Identidade única;

Objetos

Objetos• Estado:

– Compreende o conjunto de suas propriedades, associadas a seus valores correntes em um determinado instante de tempo;

– O estado de um objeto diz respeito ao seus atributos e aos valores a eles associados.

Objetos

• Estado:

– Atributo é uma propriedade nomeada de um tipo.

– A definição de dados ou atributos é idêntica à descrição dos campos de um registro, isto é, uma lista de identificadores com tipos associados.

– Atributo define o estado de um objeto.

Objetos• Comportamento

– A abstração de um objeto é caracterizada por um conjunto de serviços ou operações, que outros objetos, ditos clientes, podem requisitar;

– Operação são utilizadas para:• Recuperar a informação de estado de um

objeto;• Manipular a informação de estado de um

objeto;

– As operações também são chamada de métodos.

Objetos• Comportamento

– Comunicação entre dois agentes é feita através da troca de mensagem;

– O conjunto de mensagens a que um objeto pode responder representa o seu comportamento;

Objetos• Identidade

– Cada objeto tem um identidade própria, que lhe é inerente;

– Cada objeto dispõe de um identificador único pelo qual pode ser referenciado.

Objetos

Carro

cor:motor:velocidade:...

ligar()andar()virar()...

Objeto

Os dados estão encapsulados, são acessados

através do métodos!

Objetos

• Cada objeto tem sua própria identidade, mesmo se os estados são idênticos

Professor

nome: Clair Silvaadmissão: 01/02/2012cargo: EBBTregime: 40 horasárea: Informática

lançarNotas()escolherDisciplina()tirarFérias()mudarRegime()

Professor

nome: Clair Silvaadmissão: 01/02/2012cargo: EBBTregime: 40 horasárea: Informática

lançarNotas()escolherDisciplina()tirarFérias()mudarRegime()

Objetos• Exemplo:

• Estado?• Comportamento?• Identidade?

Objetos• Exemplo:

– Estado: vermelho– Identidade: semáforo da rua x no

cruzamento x e y– Comportamento:

Classes• É comum encontramos no mundo real, diferentes objetos (mas,

com a mesma estrutura e o mesmo comportamento) desempenhando um mesmo papel;

• Ex.: Duas cadeiras, pessoas em um sociedade, ...

• Definições de Classes:

– i. um modelo que descreve a estrutura e o comportamento que será assumido por um objeto;

– ii. Descreve um conjunto de objetos com as mesmas propriedades (atributos), o mesmo comportamento (operações) , os mesmos relacionamentos com outros objetos e a mesma semântica;

Classes x Objetos• Os objetos são

instâncias de uma classe.

– Objeto: instância de classe (tempo de execução)

– Classe: descrição estática

Classe Casa

Objetos instanciados da classe Casa

Exercício prático 1

• Modele uma data. Uma data é formada por um dia, mês, ano, hora, minuto e segundo.

Exercício prático 2

• Faça a abstração de uma classe que represente uma lâmpada, a qual possui o estado acesa ou apagada.

• As operações sobre ela são ligar e desligar. No mundo real, para saber o seu estado basta apenas olhar para a lâmpada, mas no ambiente computacional precisamos de uma operação para saber qual é o seu estado.

Exercício prático 3

• Faça a abstração de uma classe de cachorro. Os atributos dele basicamente são o nome, nascimento, cor, raca e dono. Defina as ações que o cachorro basicamente executa, como morder, comer, latir...

• Faça a abstração de uma classe que represente o dono do cachorro, contendo os atributos nome e data de nascimento. As ações que o dono executa basicamente são: andar, levar o cão para passear...

Exercício prático 4 – parte 1• Modele um funcionário. Ele deve ter o nome do funcionário, o

departamento onde trabalha, seu salário (double), a data de admissão (String), seu RG (String) e um valor booleano que indique se o funcionário está na empresa no momento ou se já foi embora (ativo).

• Crie um método bonifica que aumenta o salário do funcionário de acordo com o parâmetro passado como argumento. Crie, também, um método demite, que não recebe parâmetro algum, só modifica o valor booleano indicando que o funcionário não trabalha mais aqui. A ideia aqui é apenas modelar, isto é, só identifique que informações são importantes e o que um funcionário faz. Desenhe no papel tudo o que um Funcionario tem e tudo que ele faz.

Exercício prático 4 – parte 2

• Crie um método mostra(), que não recebe nem devolve parâmetro algum e simplesmente imprime todos os atributos do nosso funcionário. Dessa maneira, você não precisa ficar copiando e colando um monte de System.out.println() para cada mudança e teste que fizer com cada um de seus funcionários, você simplesmente vai fazer:– Funcionario f1 = new Funcionario();– //brincadeiras com f1....– f1.mostra();

Exercício para praticar 1

• Classe: Pessoa– Atributos: nome, idade.– Método: void fazAniversario()

• Crie uma pessoa, coloque seu nome e idade iniciais, faça alguns aniversários (aumentando a idade) e imprima seu nome e sua idade.

Exercício para praticar 2

• Classe: Porta– Atributos: aberta, cor, dimensaoX, dimensaoY,

dimensaoZ – Métodos: void abre(), void fecha(), void pinta(String cor),

boolean estaAberta()

• Crie uma porta, abra e feche a mesma, pinte-a de diversas cores, altere suas dimensões e use o método estaAberta para verificar se ela está aberta.

Exercício para praticar 3

• Classe: Casa– Atributos: cor, porta1, porta2, porta3 – Métodos: void pinta(String cor), int

quantasPortasEstaoAbertas()

• Crie uma casa e pinte-a. Crie três portas e coloque-as na casa; abra e feche as mesmas como desejar.

• Utilize o método quantasPortasEstaoAbertas para imprimir o número de portas abertas.