You are on page 1of 43

Engenharia de Software Fundamentos POO

Prof. Jailton Carlos Jailton.paiva@ifrn.edu.br


12/04/2011 1

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

Comparao Programao Estrutura e POO Definio de Objetos

Conceito, propriedades

Definio de Classe Elementos Principais de Programao Orientada a Objeto

Abstrao, Encapsulamento, Modularidade, Herana, Polimorfismo

Visibilidade Classe em C#.Net


3

12/04/2011

Desenvolvimento de Programas

Anlise
Define

o que deve ser feito

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

Programao Orientada a Objetos


Consistem em identificar os objetos e as operaes relevantes no mundo real O mapeamento desses em representaes abstratas no espao de solues

12/04/2011

Paradigma Estrutural x Orientao a Objeto


mtodo mtodo
procedimento procedimento mtodo mtodo

Dados -Objeto

Dados Globais
procedimento procedimento

Dados -Objeto

mtodo mtodo

Dados -Objeto

12/04/2011

Programao Orientada a Objetos

Paradigma de Programao

Dominante nos dias atuais

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

Programao Orientada a Objetos

Representao:

Casa
Mundo Real Projeto

Jos

Carro

Casa

Mora

Jos

Dirige

Carro

Definio de Objetos

Um objeto algo do mundo real :

Concreto ou Abstrato

As percepo dos seres humanos dada atravs dos objetos Um objeto uma entidade que exibe algum comportamento bem definido.
Sistema Bancrio

OBJETO = DADOS + OPERAES


12/04/2011 9

Objetos

Caractersticas
Dados

representam caractersticas

So chamados atributos So as variveis do objeto

Comportamento
Operaes

definem comportamento

So os mtodos de um objeto So as funes que so executadas por um objeto

10

Objetos - Propriedades

Estado

Representado pelos valores dos atributos de um objeto

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.

Todo carro tem em comum:

Caracterstica

Cor Pneu Direo Dirigir Frear


13

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

Foca a caracterstica essencial de alguns objetos relativo a perspectiva do visualizador

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

-> varias; Morfos -> formas;

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

Gato Tigre +emitirSom() Lobo +emitirSom() Cachorro +emitirSom() +emitirSom()

23

Visibilidade

-Private

O nvel de acesso se restringe apenas a classe;


No passado por herana; O nvel de acesso irrestrito;

+Public

#Protected

visvel em toda a classe;


visvel em todas as classes que esto no mesmo pacote (namespace);

passado por herana (mesmo em pacotes diferentes);


O nvel de acesso permitido em toda a classe Tambm visvel para as classes do mesmo pacote (namespace); S passado por herana em classes que esto no mesmo pacote;
24

~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

Declarao de uma classe em c#.Net:


[<modificadores da classe>] class <nome_classe> [: <nome_superclasse>] [implements <inteface_1>, <interface_2>, ...] {

// Variveis e mtodos da classe }


[ ] = Opcionais < > = Identificadores e palavras reservadas

Classes em C#.Net

Exemplo de declaraes de classe:


class Lampada { // Variveis // Mtodos } } public class Lampada { // Variveis // Mtodos

Atributos em C#.Net

Definem as caractersticas do objeto

[<modificadores_atributo>] <tipo_atributo> <nome_atributo> [= valor_inicial];

[ ] = Opcionais < > = Identificadores e palavras reservadas

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

[<modificadores_mtodo>] <tipo_retorno> <nome_mtodo> ([<parametros>]){ // Corpo do Mtodo

}
[ ] = Opcionais < > = Identificadores e palavras reservadas

Mtodos em C#.Net

public void acenderLampada(){ estadoLampada = true; }

public int somar(int a, int b){ int resultado = a + b; return resultado; }

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

Qualquer entidade que possui caractersticas e comportamento

Classe
Descreve um tipo de objeto Define atributos e mtodos

Atributo

Define caractersticas do objeto


Operaes que o objeto pode realizar

Mtodo

34

Fazendo na Hora: Testando Conhecimento

Criar a classe Lampada.

35

Dvidas

12/04/2011

36

Exerccio 1: Definindo Objetos

Reduzir

- Modelo Descer - Velocidade - Altitude Subir

- Agencia - Tipo - Valor

- 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

Consulta -data: Calendar -historico: String gera

0..*

Exerccio 3

Implementar as classes do seguinte diagrama:


Ponto
#x: int #y: int <<create>>+Ponto() <<create>>+Ponto(x: int, y: int) +getX(): int +getY(): int +desenhar()

+area(): double

Circulo #raio: double <<create>>+Circulo() <<create>>+Circulo(x: int, y: int, raio: double) +desenhar() +area(): double -lado: double

Quadrado

<<create>>+Quadrado() <<create>>+Quadrado(x: int, y: int, lado: double) +desenhar() +area(): double

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.

Exerccio 4: Identidade de Objetos


Dado a classe Porta:
enum Status{ABERTA,FECHA}; public class Porta { Status status; public void abrir () { status = Status.ABERTA; } public void fechar () { status = Status.FECHA; } public String getStatus() { return this.status.name(); } }

Exerccio 4: Identidade de Objetos


Porta p1 = new Porta(); Porta p2 = new Porta(); Porta p3 = new Porta(); p1.abrir(); p2.abrir(); p3 = p1; p3.fechar(); p3 = p2; p2 = p1; if (p3.estaAberta()) Console.WriteLine("Porta est aberta"); else Console.WriteLine("Porta est fechada"); p3 = p2; p1.abrir();

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

You might also like