Análise e Projeto de Sistemas



Documentos relacionados
Curso Java Starter. 1

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Orientação a Objetos

Lógica de Programação

Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Disciplina: Unidade III: Prof.: Período:

Engenharia de Software III

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Aula 3 Objeto atual com referencia THIS e Classes com Herança

Técnicas de Programação II

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

FUNDAMENTOS DA ORIENTAÇÃO A OBJETOS- REVISÃO

NetBeans. Conhecendo um pouco da IDE

Programação Orientada a Objetos em Java. Herança

Herança. Algoritmos e Programação II. Aula 5 Herança

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Polimorfismo. Prof. Leonardo Barreto Campos 1

Programação de Computadores - I. Profª Beatriz Profº Israel

Orientação a Objetos com Java

Curso Java Starter. 1

NOVIDADES DO JAVA PARA PROGRAMADORES C

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Java 2 Standard Edition Como criar classes e objetos

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Orientação a Objetos

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Curso de Licenciatura em Informática

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Cálculo utilizando variáveis do tipo DATA

PROGRAMANDO EM C# ORIENTADO A OBJETOS

Reuso com Herança a e Composiçã

Dadas a base e a altura de um triangulo, determinar sua área.

Pag: 1/20. SGI Manual. Controle de Padrões

O Novo Portal Etilux também foi criado para ser um facilitador para nossa Força de Vendas, abrangendo as seguintes características:

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Disciplina Técnicas de Modelagem

Implementando uma Classe e Criando Objetos a partir dela

DESENVOLVIMENTO DE SOFTWARE. Introdução ao Visual Studio VB.Net. Programação Estruturada. Prof. Celso Candido ADS / REDES / ENGENHARIA

Módulo 3 Custo e nível dos Estoques

UM CONCEITO FUNDAMENTAL: PATRIMÔNIO LÍQUIDO FINANCEIRO. Prof. Alvaro Guimarães de Oliveira Rio, 07/09/2014.

O Excel é um programa de computador desenvolvido para gerenciar dados na forma de planilhas.

Roteiro do Programa e Entrada/Saída

César Cruz Proprietário [18/04]

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

U3 Sistemas Análise e Desenvolvimento de Softwares ===== Manual do Plano de Contas Financeiras ===== Manual. Plano de Contas Financeiras

Lição 1 - Criação de campos calculados em consultas

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TECNICO EM INFORMATICA DISCIPLINA:

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

Padrão Básico de Projeto: Herança versus Composição

Material Didático sobre Robocode Tema: Criando Nosso Primeiro Robô

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br

1. Herança. Sobrescrevem métodos - redefinem métodos herdados. Subclasse herda de uma superclasse

UFG - Instituto de Informática

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Como criar um Utilizador no Windows

BIBLIOTECA NACIONAL RDA

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Parte I. Orientação a objetos no PHP. Contato: <lara.popov@ifsc.edu.br> Site:

Desenvolvimento Web TCC Turma A-1 /

Programação Orientada a Objetos (DPADF 0063)

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Manual do Portal do Fornecedor. isupplier

Introdução a Java. Hélder Nunes

Como consolidar dados nas planilhas utilizando o comando CONSOLIDAR do Excel

Orientação à Objetos. Aécio Costa

Windows Explorer. Prof. Valdir

Conceitos de Banco de Dados

Análise e Projeto Orientados por Objetos

Gerenciamento de Clientes

Parte 2: Micro com Windows XP Pro e Servidor IIS

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

PHP INTRODUÇÃO CLASSES E OBJETOS

Vitor Amadeu Souza

O ConnectCont é um novo método de acesso aos produtos, serviços e demais ferramentas, destinado a unificar os usuários Contmatic.

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Padrão Básico de Projeto: Interfaces e Polimorfismo

1) MANUAL DO INTEGRADOR Este documento, destinado aos instaladores do sistema, com informações de configuração.

Manual do Sistema "Vida em Mão - Controle Financeiro Para PALM" Editorial Brazil Informatica

Desenvolvimento OO com Java Orientação a objetos básica

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

PARANÁ GOVERNO DO ESTADO

BANCO DE DADOS MODELAGEM ER GENERALIZAÇÃO / ESPECIALIZAÇÃO. Prof.: Jean Carlo Mendes carlomendes@yahoo.com.br

ASSOCIAÇÃO CRISTÃ DE MOÇOS DO RIO GRANDE DO SUL DEPARTAMENTO DE TECNOLOGIA DA INFORMAÇÃO

SISTEMA BRENA DE AUTOMAÇÃO COMERCIAL

Organizando Classes em Pacotes. Profa. Thienne Johnson EACH/USP

SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA

Herança. Alberto Costa Neto DComp - UFS

Gestão de Ativos. Manual do Usuário. Treinamento Fase 1 (TRN 01)

Controle do Arquivo Técnico

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Transcrição:

Análise e Projeto de Sistemas Rafael Vargas Mesquita http://www.ci.ifes.edu.br ftp://ftp.ci.ifes.edu.br/informatica/mesquita/

Herança O que é herança? Herdar é derivar características de gerações precedentes. No mundo da Programação Orientada a Objetos, o termo é associado com uma das formas de reutilização de software. Através da herança, novas classes podem ser derivadas das classes existentes. A nova classe herda propriedades e métodos da classe base. A nova classe também pode adicionar suas próprias propriedades e métodos

Herança A hierarquia de herança pode ter vários níveis

Herança A Herança também pode surgir a partir da refatoração de classes existentes de modo a eliminar a duplicação de código Grande quantidade de atributos e métodos duplicados...

Herança Refatoração Superclasse (características comuns) Subclasses (características específicas)

Herança A classe ContaBancaria tem quatro atributos: nome: armazena o nome do cliente cpf: armazena o número do CPF do cliente numeroconta: armazena o número da conta do cliente saldo: armazena o saldo da conta Os métodos depositar e sacar são usados para fazer um depósito ou retirada da conta bancária. A classe ContaBancaria, sozinha, não é suficiente para realizar todas as transações bancárias. Existem geralmente dois tipos de contas: a conta corrente e a conta de investimentos Curso Técnico em Informática - Análise e Projeto de Sistemas

Herança As subclasses ContaInvestimento e ContaCorrente herdam as propriedades e métodos da classe ContaBancaria

No paradigma orientado a objetos podemos definir um conjunto de classes em uma estrutura hierárquica onde cada uma das classes herda características da suas superiores nesta estrutura. Para ficar mais claro vamos partir para um exemplo. Imagine que estivéssemos implementando um programa que fosse utilizado em um concessionária de veículos. Esta concessionária vende carros de passeio, jipes e veículos utilitários. Para implementar as classes destes veículos poderíamos criar três classes distintas: Jipe.java CarroPasseio.java Utilitario.java

Jipe.java

CarroPasseio.java

Utilitario.java

Perceba que, nas linhas destacadas em azul, temos as características que dizem respeito a apenas um dos tipos de veículos, isto é, no nosso modelo, apenas jipes têm tração 4x4, somente os carros de passeio têm opção de ligar o ar condicionado e farol de milha é uma característica existente apenas nos veículos utilitários Todas os demais estados e comportamentos você ainda lembra o que são estado e comportamento de um objeto? são idênticos

Agora vamos explorar um pouco mais o nosso modelo, a nossa concessionária vai começar a vender outros 5 tipos de veículos diferentes, cada um com suas peculiaridades, lá vamos nós criar mais 5 classes e copiar e colar mais 5 vezes! E mais, o cliente do software identificou uma característica importante dos veículos que deve ser adicionada ao modelo, o código do chassi. Lá vamos nós de novo implementar mais 8 afinal são 5 novos veículos mais os 3 anteriores atributos com getter e setter para contemplar esta característica. Na verdade nada disto seria necessário se nós tivéssemos utilizado corretamente o conceito de Herança da programação Orientada a Objetos.

É possível que tenhamos uma superclasse (classe Pai) Veiculo e que todas as demais herdem estas características comuns dela. A nossa classe Veiculo ficaria da seguinte forma:

Para que as demais classes herdem estas características nós devemos utilizar a palavra reservada extends. As novas classes têm como superclasse a classe Veiculo:

Graficamente podemos representar esta hierarquia de classes da seguinte forma: Nesta nova hierarquia de classes toda a subclasse de Veiculo irá compartilhar as suas características, dizemos que um jipe, carro de passeio ou utilitário são todos do tipo Veiculo. E da mesma forma toda a subclasse de Jipe irá herdar as características tanto de Veiculo quanto de Jipe.

O exemplo abaixo mostra como, apesar de não ser declarado especificamente na classe Jipe, posso acessar através do getter o atributo capacidadetanquecombustivel: Percebeu!? No exemplo acima estou manipulando o atributo através dos métodos (getter e setter) sem tê-los declarados explicitamente na classe Jipe, pois o compilador sabe que na verdade estou herdando estas características da classe Veiculo.

Esta hierarquia de classes garante que todas as mudanças efetuadas na classe Veiculo se propaguem para suas subclasses. Por exemplo, se for solicitado adicionar o comportamento buzinar, e este comportamento for uma características que todos os veículos devem ter, basta adicioná-lo a classe Veiculo que automaticamente todas as subclasses compartilharão a funcionalidade.

E agora o meu Jipe também buzina: Desta forma nós evitamos aquele super-trabalho de copiar, colar e manter várias classes cada vez que uma alteração é solicitada, concentramos tudo o que é possível e pertinente na nossa classe Veiculo e realizamos a manutenção do código em apenas um ponto da aplicação. Assim, a herança viabiliza o reuso do código

Vamos brincar um pouco com o nosso modelo, imagine que fôssemos vender o nosso software de gerência de concessionárias para uma concessionária localizada em um país que esteja em uma zona conflituosa e, além destes veículos a concessionária vende também tanques de guerra - agora eu apelei! :) portanto devemos adicionar a nossa hierarquia mais uma classe. A classe que representa um tanque de guerra fica da seguinte forma:

E novamente eu sei que a minha classe TanqueGuerra também possui as características herdadas da classe Veiculo, ou seja, além de atirar com a metralhadora e o canhão características próprias deste tipo de veículo o nosso tanque de guerra poderá buzinar, acelerar, frear e etc. Abaixo temos um exemplo do uso da classe TanqueGuerra:

Agora nós podemos pensar o seguinte, o som emitido pela buzina ( Béééémmmm ) fica bem para um Jipe, Utilitário e até quem sabe um Tanque de Guerra, mas nunca uma senhora de idade iria adquirir um carro de passeio com uma buzina deste tipo. Sendo assim nós precisamos modificar o som da buzina apenas para os carros de passeio de forma a deixá-la mais condizente com a realidade do uso deste veículo.

Rafael Vargas Mesquita http://www.ci.ifes.edu.br ftp://ftp.ci.ifes.edu.br/informatica/mesquita/

Polimorfismo O polimorfismo, que significa muitas formas, permite que uma mesma referência se comporte de formas diferentes. Utilizando corretamente o polimorfismo nós podemos fazer o código ficar mais claro, genérico e, portanto, reutilizável. Segue abaixo um exemplo:

Polimorfismo A invocação do método buzinar() na variável veiculo é feita de forma polimórfica, isto é, pode possuir diversos comportamentos diferentes. O resultado desta invocação será apenas conhecido em tempo de execução pois, dependendo do parâmetro de entrada do método main o objeto retornado pelo método criarveiculo() será de tipos diferentes. Perceba que a variável veiculo é do tipo Veiculo, ou seja, ela pode referenciar objetos das classes Jipe, CarroPasseio, TanqueGuerra e Utilitario, afinal, conforme visto, todas estas classes são também do tipo Veiculo (Herança).

Polimorfismo A situação abaixo identificada resulta em erro de compilação, isto acontece porque o método ligararcondicionado() não faz parte da classe Veiculo ou de uma de suas superclasses, ou seja, o compilador verifica se o método existe em tempo de compilação.