Professional Documents
Culture Documents
Objetivo
Comparao Programao Estrutura e POO Compreender os conceitos de Programao Orientada a Objetos (POO); Entender as vantagens de se utilizar POO; Entender os conceitos de POO aplicado a uma linguagem de programao (C# como exemplo); Aprender a criar classes e utiliz-las em um contexto prtico.
12/04/2011
Plano de Aula
Conceito, propriedades
12/04/2011
Desenvolvimento de Programas
Anlise
Define
Projeto
Define como deve ser feito Escreve em uma linguagem de programao (faz)
4
Implementao
12/04/2011
Desenvolvimento de Programas
Consiste no mapeamento do problema no mundo real a ser resolvido num modelo computacional. Programao Estrutura
Consiste na criao de um conjunto de procedimentos (algoritmos) para resolver o problema Encontrar modos apropriados de armazenar os dados
12/04/2011
Dados -Objeto
Dados Globais
procedimento procedimento
Dados -Objeto
mtodo mtodo
Dados -Objeto
12/04/2011
Paradigma de Programao
Substituiu as tcnicas de programao procedimental (estruturada) Fornece um mapeamento direto entre o mundo real e as unidades de organizao utilizadas no projeto Diversas unidades de software, chamadas de objetos, que interagem entre si Separa claramente a noo de o que feito de como feito
Representao:
Casa
Mundo Real Projeto
Jos
Carro
Casa
Mora
Jos
Dirige
Carro
Definio de Objetos
Concreto ou Abstrato
As percepo dos seres humanos dada atravs dos objetos Um objeto uma entidade que exibe algum comportamento bem definido.
Sistema Bancrio
Objetos
Caractersticas
Dados
representam caractersticas
Comportamento
Operaes
definem comportamento
10
Objetos - Propriedades
Estado
Comportamento
Definido pelo conjunto de mtodos do objeto Estado representa o resultado cumulativo de seu comportamento
Identidade
Um objeto nico, mesmo que o seu estado seja idntico ao de outro; Seu valor de referncia
Os valores dos DADOS so modificados a partir das OPERAES sobre estes dados
11
Objetos - Propriedades
Estado
Acesa
Apagada
Comportamento
Acender
Apagar
Identidade
12
Classes
So especificaes para objetos; Representam um conjunto de objetos que compartilham caractersticas e comportamentos comuns.
Caracterstica
Comportamento
Abstrao
Abstrao uma das formas fundamentais que ns lidamos com a complexidade.; Quando queremos diminuir a complexidade de alguma coisa, ignoramos detalhes sobre as partes para concentrar a ateno no nvel mais alto de um problema; No se analisa o todo, em POO importante analisar as partes para entender o todo.
14
Abstrao
15
Encapsulamento
Encapsulamento o processo de esconder todos os detalhes de um objeto que no contribuem para as suas caractersticas essenciais; O encapsulamento o modo de dar ao objeto seu comportamento caixa-preta, que o segredo da reutilizao e confiabilidade.
Se o estado de um objeto foi modificado sem uma chamada de mtodo desse objeto, ento o encapsulamento foi quebrado
16
Encapsulamento e Abstrao
So conceitos complementares Abstrao foca sobre o comportamento observvel de um objeto, enquanto encapsulamento se concentra na execuo que d origem a esse comportamento O encapsulamento proporciona barreiras explcitas entre abstraes diferentes e, portanto, leva a uma separao clara das preocupaes.
17
Modularidade
Modularizao o processo de dividir um todo em partes bem definidas, que podem ser construdas e examinadas separadamente. Essas partes se interagem entre si, fazendo com que o sistema funcione de forma adequada Particionar um programa em componentes individuais, pode reduzir a complexidade.
18
Herana
A abstrao ajuda a diminuir a complexidade. Encapsulamento ajuda a gerenciar essa complexidade, ocultando a viso dentro de nossa abstraes. A modularidade tambm ajuda, dando-nos uma maneira de agrupar logicamente abstraes relacionadas. Um conjunto de abstraes, muitas vezes forma uma hierarquia, e identificando essas hierarquias no nosso projeto, simplifica grandemente o nossa compreenso do problema.
19
Herana
Herana o mecanismo para expressar a similaridade entre Classes, simplificando a definio de classes iguais que j foram definidas. O que um leo, um tigre, um gato, um lobo e um dlmatas tm em comum? Como eles so relacionados?
20
Herana
Animal -nome: String -sexo: String -raca: String +emitirSom() +dormir() +caminhar() Leao Gato
Tigre Lobo
Cachorro
21
Polimorfismo
Polimorfimos
Poli
Significa que um objeto pode assumir diferentes formas; O conceito de polimorfismo est associado a Herana; caracterizado como o fato de uma operao poder ser implementada de diferentes maneiras pelas classes na hierarquia.
22
Polimorfismo
Animal -nome: String -sexo: String -raca: String +emitirSom() +dormir() +caminhar()
Cada animal emite sons diferente. Leo: Rugir Tigre: Roncar Cachorro: Latir Gato: Miar, rosnar Lobo: Uivar;
Leao +emitirSom()
23
Visibilidade
-Private
+Public
#Protected
~Default ou Friendly;
Classes
Classe Lampada
Atributos
potencia, ligada
mtodos
ligar, desligar, estaLigada
25
Classes
Nome da classe
Atributos
Mtodos
26
Classes em C#.Net
Classes em C#.Net
Atributos em C#.Net
Atributos em C#.Net
Exemplo:
public boolean estadoLampada = false; double valor; String marca = fluorescente;
Mtodos em C#.Net
Definem as aes que um objeto pode executar Sua definio corresponde a duas partes:
Assinatura Corpo
}
[ ] = Opcionais < > = Identificadores e palavras reservadas
Mtodos em C#.Net
Classe em C#.Net
public class Lampada{ private boolean ligada; private double potencia;
Atributos
public void ligar(){ ligada = true; } public void desligar(){ ligada = false; } public boolean estaLigada(){ return ligada; }
}
Mtodos
33
Resumo
Objeto
Classe
Descreve um tipo de objeto Define atributos e mtodos
Atributo
Mtodo
34
35
Dvidas
12/04/2011
36
Reduzir
- Marca
Acelerar
- Conta
Exerccio 2
Vimos que em um programa procedimental tradicional, o processo inicia na parte superior, com a funo main. No paradigma OO, no h uma parte superior, a questo , por onde comear? A reposta inicie procurando classes e, ento adicione mtodos a cada classe. Diante do exposto, identifique as classes em um sistema de clinica veterinria?
Exerccio 2
Especie Pessoa #nome: String #telefone: String #endereco: String Animal -nome: String -idade: int 0..* realizar Veterinario -crmv: String 1 Cliente 1..* Tratamento -dataInicial: Calendar -dataFinal: Calendar atende 1..* 1..* tem Exame -descricao: string 0..* -nome: String <<enumeration>> Sexo +MACHO +FEMEA
possui
0..*
Exerccio 3
+area(): double
Circulo #raio: double <<create>>+Circulo() <<create>>+Circulo(x: int, y: int, raio: double) +desenhar() +area(): double -lado: double
Quadrado
Cilindro -altura: double <<create>>+Cilindro() <<create>>+Cilindro(x: int, y: int, radio: double, altura: double) +desenhar() +area(): double +volume(): double
Nota: 1. Em um diagrama de classe, # refere-se visibilidade protected, + publico e - private. 2. O mtodo area() e classe Ponto abstrato.
Responda: (a) O que ser impresso? por que? (b) Quantas portas teremos ao final do programa e por qu? (d) O que acontece com as outras portas?
Referncias
Grady Booch; Robert A. Maksimchuk; Michael W. Engle. Object Oriented Analysis and Design with Application. 3 Edio. Peason Education, 2007.
Material de aula da disciplina de POO criado por Ricardo Valentim, Alexandre, Bruno Gomes e Plcido.
12/04/2011
43