Sie sind auf Seite 1von 67

Orientao Objetos

Tpicos abordados
Paradigmas de desenvolvimento Princpios de OO Conceitos de OO Benefcios

Objetivos
Compreender os conceitos bsicos de OO Entender as diferenas entre os paradigmas tradicionais Entender exemplos prticos de utilizao de OO
3

Paradigma de Desenvolvimento de Software


Ferramentas, metodologias e ambientes dependem do Paradigma de Desenvolvimento Paradigma a filosofia adotada na construo do software:

Lgico, Funcional, Procedimental, Orientado a Objetos, etc...


4

Paradigma Procedimental
Viso de desenvolvimento baseada em um modelo entrada-processamento-sada Dados so considerados separadamente das funes Funes, so ativas e tm comporta-mento Dados so repositrios passivos de informao afetados por funes

Paradigma Procedimental
Dados Dados Dados

Processamento

Resultado
6

Paradigma Procedimental
Exemplo: Calcular a folha de pagamento de um departamento
Adiantamento do Joo Salrio do Pedro Demisso da Joana Dependentes da Maria Frias do Antnio Salrio da Maria Prmio da Helena

Processamento

Custo Total
7

Paradigma Orientado a Objetos


Pressupe que o mundo composto por objetos Objeto uma entidade que combina estrutura de dados e comportamento funcional Os sistemas so modelados como um nmero de objetos que se interagem
8

Paradigma OO
Utiliza uma perspectiva mais
humana de observao da realidade, incluindo objetos, classificao e compreenso hierrquica

Procedimental vs OO

10

O que OO?

Orientao objetos uma estratgia para organizar sistemas como colees de objetos que interagem entre si e combinam dados e comportamento

11

Princpios bsicos de OO

Orientao Objetos
Abstrao Modularidade Encapsulamento Hierarquia

12

Abstrao

Anfbio

Computador

Construo

13

Abstrao
Construo de um modelo para representao de uma realidade Foco em aspectos essenciais de uma aplicao enquanto ignora os detalhes
Preserva a simplicidade do projeto
14

Abstrao
Construo de um modelo para representar a realidade
Automovel modelo preco ... atualizaPreco() ...
15

Encapsulamento
Esconde a implementao interna da especificao externa

Clientes conhecem somente a interface Clientes dependem da interface e no da implementao

16

Encapsulamento
Oferece os seguintes tipos de proteo

O estado interno de um objeto no pode ser corrompido por um cliente Mudanas internas no tm impacto sobre os clientes

Facilita a manuteno e diminui o seu custo

17

Objeto DVD

voltar()

pausar() avancar() parar()

alterarHora() tocar()

carregarDisco()

18

Modularidade
Mdulo de estoque
Mdulo de faturamento Mdulo de clientes Sistema de vendas Mdulo de canais de venda

19

Modularidade
A quebra de algo complexo em pedaos menores que sejam gerenciveis

Melhor entendimento do sistema Partes podem ser desenvolvidas separadamente

20

Modularidade
Cuidado com a coeso e o acoplamento!!!!

Deve-se maximizar a coeso, enquanto minimiza-se o acoplamento.

21

Hierarquia
Define nveis de abstrao
Forma Animal

Aumenta a abstrao

Polgono

Mamfero

Ave

Tringulo

Retngulo

Homem

Leo

Diminui a abstrao
22

Hierarquia
Criao de nveis de abstrao
Base conceitual para permitir extensibilidade do software

Reuso de cdigo e comportamento

23

Conceitos bsicos de OO
Objeto Classe Atributo Operao Interface (Polimorfismo) Pacote Relacionamentos
24

O que um objeto?
Um objeto um conceito, abstrao ou coisa com limites e significado para uma aplicao Um objeto deve ter:

Estado Comportamento Identidade nica

25

Exemplos de Objetos

Opala placa AAM1921 Gisele Bndchen Johnnie Walker Black Label


26

Classe
Classes especificam a estrutura e o comportamento dos objetos Classes so como "moldes" para a criao de objetos
Objetos so instncias de classes

27

Exemplo de classes
Classe Curso Comportamento Adicionar um aluno Remover um aluno Atribuir professor Atribuir sala

Propriedades Nome Localizao Durao Crditos

28

Objetos da classe Curso


Curso Adicionar um aluno Remover um aluno Atribuir professor Atribuir sala Nome Localizao Durao Crditos Nome = Anlise II Localizao = MAC Durao = 15h Crditos = 4 Nome = Anlise I Localizao = MAC Durao = 30h Crditos = 2 Nome = SI Localizao = MAC Durao = 30h Crditos = 2

29

Classes de Objetos
Quantas classes temos aqui?

30

Relao entre classe e objeto


Classe uma definio abstrata de um objeto

Ela define a estrutura e o comportamento dos objetos Serve como template para criao de objetos

Objetos so agrupados em classes

31

Classes e objetos em Java


class Pessoa { ... }

... Pessoa p1 = new Pessoa(); Pessoa p2 = new Pessoa();

32

Exerccio
Descrever as classes do sistema de Reserva de passagem

33

Atributo
Propriedades de um objeto
O estado do objeto definido pelo conjunto de seus atributos

Fisicamente armazenado em uma varivel


34

Objetos da classe Curso


Curso Adicionar um aluno Remover um aluno Atribuir professor Atribuir sala Nome Localizao Durao Crditos Nome = Anlise II Localizao = MAC Durao = 15h Crditos = 4 Nome = Anlise I Localizao = MAC Durao = 30h Crditos = 2 Nome = SI Localizao = MAC Durao = 30h Crditos = 2

35

Atributos em Java
class Pessoa { int idade; String nome; }

... Pessoa p1 = new Pessoa(); Pessoa p2 = new Pessoa(); p1.nome = Gibeon; P2.nome = Adilson;
36

Referncia para outros objetos


Endereo Pessoa
Nome = Anlise I Idade = 23 Endereco Rua = Cruzeiro Numero = 262 Bairro = Setubal Cidade = Recife

37

Atributo composto em Java


class Pessoa { int idade; String nome; Endereco end; } class Endereco { String rua; String bairro; int numero; }

... Pessoa p1 = new Pessoa();

p1.nome = Gibeon; p1.endereco = new Endereco();


38

Operao
Modela comportamento das classes
Servios que os objetos oferecem a outros objetos (Troca de mensagens entre objetos)

39

Objetos da classe Curso


Curso Adicionar um aluno Remover um aluno Atribuir professor Atribuir sala Nome Localizao Durao Crditos Nome = Anlise II Localizao = MAC Durao = 15h Crditos = 4 Nome = Anlise I Localizao = MAC Durao = 30h Crditos = 2 Nome = SI Localizao = MAC Durao = 30h Crditos = 2

40

Operaes em Java
class Pessoa { ... void aniversariar(){ idade = idade + 1; } } ... Pessoa p1 = new Pessoa(); Pessoa p2 = new Pessoa(); p1.nome = Gibeon; P1.aniversariar();
41

Troca de mensagens
B() C() A() A()

D() E()

42

Troca de mensagens em Java


class TipoA { TipoB b = new TipoB(); void m1(){ b.m2(); } } class TipoB { void m2(){ ... } }
43

Exerccio
Adicionar atributos e mtodos s classes selecionadas

44

Polimorfismo
Habilidade de esconder diferentes implementaes atravs de uma nica interface

Manufactor A

Manufactor A

Manufactor C

45

Interface
Interfaces formalizam polimorfismo Aumentam o nvel de reusabilidade Viabilizam o uso de componentes Reduzem o esforo de evoluo da aplicao

46

Interface
Interfaces definem um tipo especificando apenas a assinatura de seus mtodos Interfaces no possuem atributos e seus mtodos no tm corpo
Classes implementam interfaces

provem implementao para os mtodos especificados em uma interface

47

Exemplo de Interface

voltar() avancar()

pausar() parar()

tocar()

carregarDisco()

alterarHora()
48

Interface em Java
interface DVD { void voltar(); void avancar(); void parar(); void tocar(); } class DVDGradiente implements DVD{ void voltar(){} void avancar(){} void parar(){} void tocar(){} }

class DVDSony implements DVD{ void voltar(){} void avancar(){} void parar(){} void tocar(){} }

49

Generalizao/Especializao
um relacionamento entre um elemento genrico e um mais especfico Tambm chamada de Herana
O objeto da classe filha herda todas as caractersticas da classe pai
50

Herana
Class Animal{ ... } Animal Class Mamifero extends Animal{ ... } Ave Class Ave extends Animal{ ... }

Mamfero

Homem

Leo

Class Homem extends Mamifero{ ... }


51

Caractersticas da herana
Uma subclasse herda os atributos, operaes e relacionamentos de seu pai Uma subclasse pode:

Adicionar atributo, operaes e relacionamentos

52

Classe abstrata
Classe abstrata aquela que no possui instncia Em geral, possui pelo menos um mtodo abstrato Mtodos abstratos no tm corpo

subclasses no abstratas so obrigadas a fornecer uma implementao para eles

53

Exemplo de classe abstrata


Poligono Mover(x,y) Area() numeroLados()

Quadrilatero Triangulo

Pentagono

54

Classe abstrata em Java


abstract class Poligono { void mover(int x,int y){...} double area(){...} int numeroLados(); }

class Quadrilatero extends Poligono{ int numeroLados(){return 4;} }

55

Classes, Interfaces e Classes Abstratas


Interfaces
Assinaturas dos mtodos

Classes
Atributos Mtodos

Classes Abstratas
Atributos Mtodos Assinatura de Mtodos

56

Classes abstratas x Interfaces


Herana de tipos x herana de cdigo Classes descrevem propriedades fundamentais de um objeto Interfaces descrevem papis desempenhados por um objeto em determinadas situaes Interfaces so teis para implementar herana mltipla
57

Exerccio
Identificar oportunidades de generalizao ou especializao

58

Pacote
Mecanismo para organizar elementos em grupos Facilita entendimento do sistema Favorece modularidade e reuso em larga escala Essencial para estruturar sistemas complexos

nome do pacote
59

Coeso e Acoplamento
Acoplamento a medida de quo conectadas duas classes so

cuidado com herana

Coeso a medida de quo auto-contida uma classe Sistemas devem ter baixo acoplamento e alta coeso

bom para manuteno


60

Visibilidade de acesso
Existem quatro tipos bsicos de modificadores de acesso

Public Private Protected Friendly

Dependendo do escopo (classe, mtodo ou atributo), podem ter significados diferentes Mecanismo que facilita o encapsulamento
61

Visibilidade em classes
Public Qualquer outra classe pode acess-la Private Apenas classes presentes no mesmo arquivo podem acess-la Friendly Apenas classes no mesmo pacote podem acess-la

62

Visibilidade de mtodos e atributos


Public So visveis para quaisquer classes invocar/acessar Private So visveis apenas na prpria classe Protected So visveis apenas para subclasses ou classes do mesmo pacote Friendly So visveis apenas para classes do mesmo pacote
63

Um Sistema OO

64

Benefcios
nico paradigma (Tudo baseado em classes) Facilita o reuso de cdigo e arquitetura Reflete o mundo real Estabilidade

Pequenas mudanas nos requisitos exigem poucas mudanas no cdigo


65

Suporte
Mtodos e tcnicas Linguagens de modelagem: UML, OMT Linguagens de programao Ferramentas, Ambientes Padres de projeto OO Etc.

66

FIM!!!

67

Das könnte Ihnen auch gefallen