Conceitos de POO

46
Programaç Programaç ão ão Orientada Orientada a Objetos a Objetos Ricardo Sobjak Ricardo Sobjak

Transcript of Conceitos de POO

Page 1: Conceitos de POO

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

ObjetosObjetos

Ricardo SobjakRicardo Sobjak

Page 2: Conceitos de POO

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.

Page 3: Conceitos de POO

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

Page 4: Conceitos de POO

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.

Page 5: Conceitos de POO

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.

Page 6: Conceitos de POO

ProgramaPrograma

Processos

Dados

ClasseClasse

Atributos

Operações

Enfoque baseado em sistema versusenfoque baseado em objeto

Foco em Sistema Foco em Objeto

Page 7: Conceitos de POO

Princípios básicos do Paradigma Orientado a Objetos

Page 8: Conceitos de POO

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.

Page 9: Conceitos de POO

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.”

Page 10: Conceitos de POO

Abstração

Page 11: Conceitos de POO

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;

Page 12: Conceitos de POO

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.

Page 13: Conceitos de POO

Abstração x Representação

Page 14: Conceitos de POO

Encapsulamento

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

Page 15: Conceitos de POO

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”

Page 16: Conceitos de POO

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);

Page 17: Conceitos de POO

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.

Page 18: Conceitos de POO

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

objetos;– Garantir a estabilidade aos

sistemas;

Page 19: Conceitos de POO

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”

Page 20: Conceitos de POO

Modularidade

Page 21: Conceitos de POO

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;

Page 22: Conceitos de POO

HierarquiaMaior

abstração

Menor abstração

Page 23: Conceitos de POO

CONCEITOS BÁSICOS DA ORIENTAÇÃO A OBJETOS

Page 24: Conceitos de POO

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.

Page 25: Conceitos de POO

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.

Page 26: Conceitos de POO

Objetos

• Objetos possuem:

– Estados (informações);

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

– Identidade única;

Page 27: Conceitos de POO

Objetos

Page 28: Conceitos de POO

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.

Page 29: Conceitos de POO

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.

Page 30: Conceitos de POO

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.

Page 31: Conceitos de POO

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;

Page 32: Conceitos de POO

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.

Page 33: Conceitos de POO

Objetos

Carro

cor:motor:velocidade:...

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

Objeto

Os dados estão encapsulados, são acessados

através do métodos!

Page 34: Conceitos de POO

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()

Page 35: Conceitos de POO

Objetos• Exemplo:

• Estado?• Comportamento?• Identidade?

Page 36: Conceitos de POO

Objetos• Exemplo:

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

cruzamento x e y– Comportamento:

Page 37: Conceitos de POO

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;

Page 38: Conceitos de POO

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

Page 39: Conceitos de POO

Exercício prático 1

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

Page 40: Conceitos de POO

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.

Page 41: Conceitos de POO

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...

Page 42: Conceitos de POO

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.

Page 43: Conceitos de POO

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();

Page 44: Conceitos de POO

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.

Page 45: Conceitos de POO

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.

Page 46: Conceitos de POO

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.