Beruflich Dokumente
Kultur Dokumente
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 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 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
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
17
Objeto DVD
voltar()
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
20
Modularidade
Cuidado com a coeso e 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
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:
25
Exemplos de Objetos
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
28
29
Classes de Objetos
Quantas classes temos aqui?
30
Ela define a estrutura e o comportamento dos objetos Serve como template para criao de objetos
31
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
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
37
Operao
Modela comportamento das classes
Servios que os objetos oferecem a outros objetos (Troca de mensagens entre objetos)
39
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
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
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
Caractersticas da herana
Uma subclasse herda os atributos, operaes e relacionamentos de seu pai Uma subclasse pode:
52
Classe abstrata
Classe abstrata aquela que no possui instncia Em geral, possui pelo menos um mtodo abstrato Mtodos abstratos no tm corpo
53
Quadrilatero Triangulo
Pentagono
54
55
Classes
Atributos Mtodos
Classes Abstratas
Atributos Mtodos Assinatura de Mtodos
56
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
Coeso a medida de quo auto-contida uma classe Sistemas devem ter baixo acoplamento e alta coeso
Visibilidade de acesso
Existem quatro tipos bsicos de modificadores de acesso
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
Um Sistema OO
64
Benefcios
nico paradigma (Tudo baseado em classes) Facilita o reuso de cdigo e arquitetura Reflete o mundo real Estabilidade
Suporte
Mtodos e tcnicas Linguagens de modelagem: UML, OMT Linguagens de programao Ferramentas, Ambientes Padres de projeto OO Etc.
66
FIM!!!
67