670 likes | 880 Views
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.
E N D
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
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 • 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
Processamento Paradigma Procedimental Dados Dados Dados Resultado
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 • 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 Utiliza uma perspectiva mais humana de observação da realidade, incluindo objetos, classificação e compreensão hierárquica
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 Orientação à Objetos Abstração Modularidade Encapsulamento Hierarquia
Abstração Anfíbio Computador Construção
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ção • Construção de um modelo para representar a realidade Automovel modelo preco ... atualizaPreco() ...
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
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 voltar() pausar() alterarHora() avancar() parar() tocar() carregarDisco()
Modularidade Módulo de estoque Módulo de faturamento Módulo de clientes Módulo de canais de venda Sistema de vendas
Modularidade • A quebra de algo complexo em pedaços menores que sejam gerenciáveis • Melhor entendimento do sistema • Partes podem ser desenvolvidas separadamente
Modularidade Cuidado com a coesão e o acoplamento!!!! “Deve-se maximizar a coesão, enquanto minimiza-se o acoplamento.”
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
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 • Objeto • Classe • Atributo • Operação • Interface (Polimorfismo) • Pacote • Relacionamentos
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 Opala placa AAM1921 Gisele Bündchen Johnnie Walker Black Label
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 Classe Curso Comportamento Propriedades Adicionar um aluno Remover um aluno Atribuir professor Atribuir sala Nome Localização Duração Créditos
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 • Quantas classes temos aqui?
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 class Pessoa { ... } ... Pessoa p1 = new Pessoa(); Pessoa p2 = new Pessoa();
Exercício Descrever as classes do sistema de Reserva de passagem
Atributo • Propriedades de um objeto • O estado do objeto é definido pelo conjunto de seus atributos • Fisicamente armazenado em uma variável
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 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 Endereço Pessoa • Rua = Cruzeiro • Numero = 262 • Bairro = Setubal • Cidade = Recife • Nome = Análise I • Idade = 23 • Endereco
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 • Modela comportamento das classes • Serviços que os objetos oferecem a outros objetos (Troca de mensagens entre objetos)
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 class Pessoa { ... void aniversariar(){ idade = idade + 1; } } ... Pessoa p1 = new Pessoa(); Pessoa p2 = new Pessoa(); p1.nome = “Gibeon”; P1.aniversariar();
Troca de mensagens B() C() A() A() D() E()
Troca de mensagens em Java class TipoA { TipoB b = new TipoB(); void m1(){ b.m2(); } } class TipoB { void m2(){ ... } }
Exercício • Adicionar atributos e métodos às classes selecionadas
Manufactor A Manufactor C Manufactor A Polimorfismo • Habilidade de esconder diferentes implementações através de uma única 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
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 pausar() voltar() tocar() parar() avancar() carregarDisco() alterarHora()
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 • É 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