orienta o objetos n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Orientação à Objetos PowerPoint Presentation
Download Presentation
Orientação à Objetos

Loading in 2 Seconds...

play fullscreen
1 / 67

Orientação à Objetos - PowerPoint PPT Presentation


  • 121 Views
  • Uploaded on

Orientação à Objetos. Tópicos abordados. Paradigmas de desenvolvimento Princípios de OO Conceitos de OO Benefícios. Objetivos. Compreender os conceitos básicos de OO Entender as diferenças entre os paradigmas tradicionais Entender exemplos práticos de utilização de OO.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Orientação à Objetos' - mahogony


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
t picos abordados
Tópicos abordados
  • Paradigmas de desenvolvimento
  • Princípios de OO
  • Conceitos de OO
  • Benefícios
objetivos
Objetivos
  • Compreender os conceitos básicos de OO
  • Entender as diferenças entre os paradigmas tradicionais
  • Entender exemplos práticos de utilização de OO
paradigma de desenvolvimento de software
Paradigma de Desenvolvimento de Software
  • Ferramentas, metodologias e ambientes dependem do Paradigma de Desenvolvimento
  • Paradigma é a “filosofia” adotada na construção do software:
    • Lógico, Funcional, Procedimental, Orientado a Objetos, etc...
paradigma procedimental
Paradigma Procedimental
  • Visão de desenvolvimento baseada em um modelo entrada-processamento-saída
  • Dados são considerados separadamente das funções
  • Funções, são ativas e têm comporta-mento
  • Dados são repositórios passivos de informação afetados por funções
paradigma procedimental2

Processamento

Paradigma Procedimental
  • Exemplo: Calcular a folha de pagamento de um departamento

Dependentes da Maria

Férias do Antônio

Adiantamento do João

Salário da Maria

Salário do Pedro

Demissão da Joana

Prêmio da Helena

Custo Total

paradigma orientado a objetos
Paradigma Orientado a Objetos
  • Pressupõe que o mundo é composto por objetos
  • Objeto é uma entidade que combina estrutura de dados e comportamento funcional
  • Os sistemas são modelados como um número de objetos que se interagem
paradigma oo
Paradigma OO

Utiliza uma perspectiva mais

humana de observação da realidade,

incluindo objetos, classificação e

compreensão hierárquica

o que oo
O que é OO?

“Orientação à objetos é uma estratégia para organizar sistemas como coleções de objetos que interagem entre si e combinam dados e comportamento”

princ pios b sicos de oo
Princípios básicos de OO

Orientação à Objetos

Abstração

Modularidade

Encapsulamento

Hierarquia

abstra o
Abstração

Anfíbio

Computador

Construção

abstra o1
Abstração
  • Construção de um modelo para representação de uma realidade
  • Foco em aspectos essenciais de uma aplicação enquanto ignora os detalhes
  • Preserva a simplicidade do projeto
abstra o2
Abstração
  • Construção de um modelo para representar a realidade

Automovel

modelo

preco

...

atualizaPreco()

...

encapsulamento
Encapsulamento
  • Esconde a implementação interna da especificação externa
    • Clientes conhecem somente a interface
    • Clientes dependem da interface e não da implementação
encapsulamento1
Encapsulamento
  • Oferece os seguintes tipos de proteção
    • O estado interno de um objeto não pode ser corrompido por um cliente
    • Mudanças internas não têm impacto sobre os clientes
  • Facilita a manutenção e diminui o seu custo
objeto dvd
Objeto DVD

voltar()

pausar()

alterarHora()

avancar()

parar()

tocar()

carregarDisco()

modularidade
Modularidade

Módulo de estoque

Módulo de faturamento

Módulo de clientes

Módulo de canais de venda

Sistema de vendas

modularidade1
Modularidade
  • A quebra de algo complexo em pedaços menores que sejam gerenciáveis
    • Melhor entendimento do sistema
    • Partes podem ser desenvolvidas separadamente
modularidade2
Modularidade

Cuidado com a coesão e o acoplamento!!!!

“Deve-se maximizar a coesão, enquanto minimiza-se o acoplamento.”

hierarquia
Hierarquia

Aumenta a abstração

  • Define níveis de abstração

Animal

Forma

Mamífero

Ave

Polígono

Triângulo

Retângulo

Homem

Leão

Diminui a abstração

hierarquia1
Hierarquia
  • Criação de níveis de abstração
  • Base conceitual para permitir extensibilidade do software
  • Reuso de código e comportamento
conceitos b sicos de oo
Conceitos básicos de OO
  • Objeto
  • Classe
  • Atributo
  • Operação
  • Interface (Polimorfismo)
  • Pacote
  • Relacionamentos
o que um objeto
O que é um objeto?

“Um objeto é um conceito, abstração ou coisa com limites e significado para uma aplicação”

  • Um objeto deve ter:
    • Estado
    • Comportamento
    • Identidade única
exemplos de objetos
Exemplos de Objetos

Opala placa AAM1921

Gisele Bündchen

Johnnie Walker

Black Label

classe
Classe
  • Classes especificam a estrutura e o comportamento dos objetos
  • Classes são como "moldes" para a criação de objetos
  • Objetos são instâncias de classes
exemplo de classes
Exemplo de classes

Classe

Curso

Comportamento

Propriedades

Adicionar um aluno

Remover um aluno

Atribuir professor

Atribuir sala

Nome

Localização

Duração

Créditos

objetos da classe curso

Curso

  • Adicionar um aluno
  • Remover um aluno
  • Atribuir professor
  • Atribuir sala
  • Nome
  • Localização
  • Duração
  • Créditos
Objetos da classe Curso
  • Nome = Análise I
  • Localização = MAC
  • Duração = 30h
  • Créditos = 2
  • Nome = SI
  • Localização = MAC
  • Duração = 30h
  • Créditos = 2
  • Nome = Análise II
  • Localização = MAC
  • Duração = 15h
  • Créditos = 4
classes de objetos
Classes de Objetos
  • Quantas classes temos aqui?
rela o entre classe e objeto
Relação entre classe e objeto
  • Classe é uma definição abstrata de um objeto
    • Ela define a estrutura e o comportamento dos objetos
    • Serve como template para criação de objetos
  • Objetos são agrupados em classes
classes e objetos em java
Classes e objetos em Java

class Pessoa {

...

}

...

Pessoa p1 = new Pessoa();

Pessoa p2 = new Pessoa();

exerc cio
Exercício

Descrever as classes do sistema de Reserva de passagem

atributo
Atributo
  • Propriedades de um objeto
  • O estado do objeto é definido pelo conjunto de seus atributos
  • Fisicamente armazenado em uma variável
objetos da classe curso1

Curso

  • Adicionar um aluno
  • Remover um aluno
  • Atribuir professor
  • Atribuir sala
  • Nome
  • Localização
  • Duração
  • Créditos
Objetos da classe Curso
  • Nome = Análise I
  • Localização = MAC
  • Duração = 30h
  • Créditos = 2
  • Nome = SI
  • Localização = MAC
  • Duração = 30h
  • Créditos = 2
  • Nome = Análise II
  • Localização = MAC
  • Duração = 15h
  • Créditos = 4
atributos em java
Atributos em Java

class Pessoa {

int idade;

String nome;

}

...

Pessoa p1 = new Pessoa();

Pessoa p2 = new Pessoa();

p1.nome = “Gibeon”;

P2.nome = “Adilson”;

refer ncia para outros objetos
Referência para outros objetos

Endereço

Pessoa

  • Rua = Cruzeiro
  • Numero = 262
  • Bairro = Setubal
  • Cidade = Recife
  • Nome = Análise I
  • Idade = 23
  • Endereco
atributo composto em java
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();

opera o
Operação
  • Modela comportamento das classes
  • Serviços que os objetos oferecem a outros objetos (Troca de mensagens entre objetos)
objetos da classe curso2

Curso

  • Adicionar um aluno
  • Remover um aluno
  • Atribuir professor
  • Atribuir sala
  • Nome
  • Localização
  • Duração
  • Créditos
Objetos da classe Curso
  • Nome = Análise I
  • Localização = MAC
  • Duração = 30h
  • Créditos = 2
  • Nome = SI
  • Localização = MAC
  • Duração = 30h
  • Créditos = 2
  • Nome = Análise II
  • Localização = MAC
  • Duração = 15h
  • Créditos = 4
opera es em java
Operações em Java

class Pessoa {

...

void aniversariar(){

idade = idade + 1;

}

}

...

Pessoa p1 = new Pessoa();

Pessoa p2 = new Pessoa();

p1.nome = “Gibeon”;

P1.aniversariar();

troca de mensagens
Troca de mensagens

B()

C()

A()

A()

D()

E()

troca de mensagens em java
Troca de mensagens em Java

class TipoA {

TipoB b = new TipoB();

void m1(){

b.m2();

}

}

class TipoB {

void m2(){

...

}

}

exerc cio1
Exercício
  • Adicionar atributos e métodos às classes selecionadas
polimorfismo

Manufactor A

Manufactor C

Manufactor A

Polimorfismo
  • Habilidade de esconder diferentes implementações através de uma única interface
interface
Interface
  • Interfaces formalizam polimorfismo
  • Aumentam o nível de reusabilidade
  • Viabilizam o uso de componentes
  • Reduzem o esforço de evolução da aplicação
interface1
Interface
  • Interfaces definem um tipo especificando apenas a assinatura de seus métodos
  • Interfaces não possuem atributos e seus métodos não têm corpo
  • Classes implementam interfaces
    • provêem implementação para os métodos especificados em uma interface
exemplo de interface
Exemplo de Interface

pausar()

voltar()

tocar()

parar()

avancar()

carregarDisco()

alterarHora()

interface em java
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(){}

}

generaliza o especializa o
Generalização/Especialização
  • É um relacionamento entre um elemento genérico e um mais específico
  • Também chamada de Herança
  • O objeto da classe filha “herda” todas as características da classe pai
heran a
Herança

Class Animal{

...

}

Animal

Class Mamifero extends Animal{

...

}

Mamífero

Ave

Class Ave extends Animal{

...

}

Homem

Leão

Class Homem extends Mamifero{

...

}

caracter sticas da heran a
Características da herança
  • Uma subclasse herda os atributos, operações e relacionamentos de seu pai
  • Uma subclasse pode:
    • Adicionar atributo, operações e relacionamentos
classe abstrata
Classe abstrata
  • Classe abstrata é aquela que não possui instância
  • Em geral, possui pelo menos um método abstrato
  • Métodos abstratos não têm corpo
    • subclasses não abstratas são obrigadas a fornecer uma implementação para eles
exemplo de classe abstrata
Exemplo de classe abstrata
  • Mover(x,y)
  • Area()
  • numeroLados()

Poligono

Pentagono

Quadrilatero

Triangulo

classe abstrata em java
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;}

}

classes interfaces e classes abstratas

Interfaces

  • Assinaturas dos métodos

Classes

  • Atributos
  • Métodos
Classes, Interfaces e Classes Abstratas

Classes Abstratas

  • Atributos
  • Métodos
  • Assinatura de Métodos
classes abstratas x interfaces
Classes abstratas x Interfaces
  • Herança de tipos x herança de código
  • Classes descrevem propriedades fundamentais de um objeto
  • Interfaces descrevem papéis desempenhados por um objeto em determinadas situações
  • Interfaces são úteis para implementar herança múltipla
exerc cio2
Exercício
  • Identificar oportunidades de generalização ou especialização
pacote
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

coes o e acoplamento
Coesão e Acoplamento
  • Acoplamento é a medida de quão conectadas duas classes são
    • cuidado com herança
  • Coesão é a medida de quão auto-contida uma classe é
  • Sistemas devem ter baixo acoplamento e alta coesão
    • bom para manutenção
visibilidade de acesso
Visibilidade de acesso
  • Existem quatro tipos básicos de modificadores de acesso
    • Public
    • Private
    • Protected
    • Friendly
  • Dependendo do escopo (classe, método ou atributo), podem ter significados diferentes
  • Mecanismo que facilita o encapsulamento
visibilidade em classes
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
visibilidade de m todos e atributos
Visibilidade de métodos e atributos
  • Public – São visíveis para quaisquer classes invocar/acessar
  • Private – São visíveis apenas na própria classe
  • Protected – São visíveis apenas para subclasses ou classes do mesmo pacote
  • Friendly – São visíveis apenas para classes do mesmo pacote
benef cios
Benefícios
  • Único paradigma (Tudo é baseado em classes)
  • Facilita o reuso de código e arquitetura
  • Reflete o mundo real
  • Estabilidade
    • “Pequenas mudanças nos requisitos exigem poucas mudanças no código”
suporte
Suporte
  • Métodos e técnicas
  • Linguagens de modelagem: UML, OMT
  • Linguagens de programação
  • Ferramentas, Ambientes
  • Padrões de projeto OO
  • Etc.