introdução ao paradigma de orientação a objetos prof. leandro buss becker...

35
Introdu Introdu ção ao ção ao Paradigma de Paradigma de Orientação a Objetos Orientação a Objetos Prof. Leandro Buss Becker Prof. Leandro Buss Becker mailto:[email protected]. mailto:[email protected]. br br

Upload: internet

Post on 17-Apr-2015

115 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

IntroduIntrodução ao Paradigma ção ao Paradigma de Orientação a Objetosde Orientação a Objetos

Prof. Leandro Buss BeckerProf. Leandro Buss Becker

mailto:[email protected]:[email protected]

Page 2: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

'Crise do Software''Crise do Software'

prazos ultrapassadosprazos ultrapassadoscustos acima dos previstoscustos acima dos previstosnão atendimento dos requisitos dos não atendimento dos requisitos dos

clientesclienteselevado custo de manutenção elevado custo de manutenção

Page 3: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

ComplexidadeComplexidade

hardware

engineering

complexidade

1982 1993

racionalização(metodologias)

fonte: AEG-Alemanha (1993)

Page 4: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Dados Interessantes:Dados Interessantes:

custos hardware vs. software custos hardware vs. software (fonte: SEL-ALCATEL)(fonte: SEL-ALCATEL) 1970 = 8:21970 = 8:2 1991 = 2:81991 = 2:8 hoje = 1:9hoje = 1:9

custos com manutenção de softwarecustos com manutenção de software HP-Alemanha (50% engenheiros HP-Alemanha (50% engenheiros

envolvidos em manutenção)envolvidos em manutenção) VW (80%)VW (80%)

Page 5: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

"Metodologia de Projeto""Metodologia de Projeto"

CodificaçãoCodificação

Page 6: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

"Metodologia de Projeto""Metodologia de Projeto"

CodificaçãoCodificação

OraçãoOração

Page 7: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Como domar esta complexidade ?Como domar esta complexidade ?

encapsular informaçãoencapsular informação('information hiding')('information hiding')

decomposiçãodecomposiçãohierarquia (níveis hierarquia (níveis

de abstração)de abstração)múltiplas visõesmúltiplas visões

Page 8: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

ModularidadeModularidade

Propriedade de construção de sistemas Propriedade de construção de sistemas através de através de módulosmódulos

A A coesãocoesão de um módulo denota a média de um módulo denota a média da inter-relação entre os seus da inter-relação entre os seus componentescomponentes

O O acoplamentoacoplamento entre os módulos é o entre os módulos é o grau de interdependência entre elesgrau de interdependência entre eles

Ideal: Alta coesão e Baixo acoplamentoIdeal: Alta coesão e Baixo acoplamento

Page 9: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

ModularidadeModularidade

Page 10: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

ModularidadeModularidade

Arquitetura de um sistema de controle fabrilArquitetura de um sistema de controle fabril

ControleControle

SensoresSensores

Interface GráficaInterface Gráfica

MáquinasMáquinas

Classe Máquina Classe Máquina ......Classe CortadoraClasse Cortadora......Classe PerfuratrizClasse Perfuratriz......Classe PrensaClasse Prensa......

Page 11: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

EncapsulamentoEncapsulamentoTécnica que consiste em separar aspectos de Técnica que consiste em separar aspectos de usouso dos aspectos de dos aspectos de implementaçãoimplementação

É igualmente chamado de Ocultamento de É igualmente chamado de Ocultamento de Informação ("Information Hide")Informação ("Information Hide")

Um componente de software ("objeto") possui Um componente de software ("objeto") possui uma interface visível e uma parte interna uma interface visível e uma parte interna invisível.invisível.

O compilador se encarrega de verificar a O compilador se encarrega de verificar a validade de uso dos componentes de um objeto validade de uso dos componentes de um objeto (através de regras de escopo) (através de regras de escopo)

Page 12: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

EncapsulamentoEncapsulamento

Page 13: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

EncapsulamentoEncapsulamento

Implementação de uma filaImplementação de uma fila

Visão do clienteVisão do cliente

Estado InternoEstado Interno Vetor de tamanho Fixo Estático ouVetor de tamanho Fixo Estático ou Vetor de tamanho Fixo Alocado dinâmicamente ouVetor de tamanho Fixo Alocado dinâmicamente ou Lista de Elementos ouLista de Elementos ou Abordagens MistaAbordagens Mista

FILAFILA

insereinsereremoveremove

Page 14: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

HierarquiaHierarquia

Mecanismo utilizado para manipular Mecanismo utilizado para manipular sistemas complexossistemas complexos

As tres formas mais importantes de As tres formas mais importantes de Hierarquia são:Hierarquia são: Classificação e InstanciaçãoClassificação e Instanciação Generalização e EspecializaçãoGeneralização e Especialização Agregação e DecomposiçãoAgregação e Decomposição

Page 15: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

HierarquiaHierarquia: : Classificação e Classificação e InstanciaçãoInstanciação

Classificar significa agrupar objetos com base em estruturas e Classificar significa agrupar objetos com base em estruturas e comportamentos semelhantes.comportamentos semelhantes.

Instanciar objetos significa gerar novos exemplares a partir de Instanciar objetos significa gerar novos exemplares a partir de uma descrição abstrata de um objeto genéricouma descrição abstrata de um objeto genérico

Os alunos são exemplares da classe Aluno, que por sua vez é Os alunos são exemplares da classe Aluno, que por sua vez é utilizada para gerar novos alunos.utilizada para gerar novos alunos.

AlunoAluno

AlunosAlunos AlunosAlunosAlunosAlunos

AlunosAlunos

AlunosAlunosAlunosAlunos

ClassificaçãoClassificação InstanciaçãoInstanciação

Page 16: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

ClassificaçãoClassificação

Page 17: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

HierarquiaHierarquia: : Generalização e Generalização e EspecializaçãoEspecialização

Generalizar significa remover restrições Generalizar significa remover restrições para obter abstrações mais genéricaspara obter abstrações mais genéricas

Especializar significa buscar Especializar significa buscar características que diferenciem características que diferenciem abstrações afinsabstrações afins

EstruturaEstruturade dadosde dados

FilaFila MatrizMatriz

GeneralizaçãoGeneralização EspecializaçãoEspecialização

Page 18: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

HierarquiaHierarquia: : Agregação e Agregação e DecomposiçãoDecomposição

Agregar significa combinar abstrações Agregar significa combinar abstrações para obter estruturas e comportamentos para obter estruturas e comportamentos mais complexosmais complexos

Decompor significa detalhar uma Decompor significa detalhar uma abstração dividindo-a nos seus abstração dividindo-a nos seus elementos constituinteselementos constituintes

Linha de Linha de MontagemMontagem

EsteiraEsteira CortadoraCortadora PerfuratrizPerfuratriz

DecomposiçãoDecomposiçãoAgregaçãoAgregação

Page 19: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

AbstraçãoAbstração

Abstrair é concentrar-se no que é Abstrair é concentrar-se no que é realmente relevante e ignorar detalhesrealmente relevante e ignorar detalhes

Observar as coisas por suas Observar as coisas por suas características mais gerais e deixar de características mais gerais e deixar de lado particularidadeslado particularidades

Page 20: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

AbstraçãoAbstração

Page 21: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Conceitos Básicos: ObjetoConceitos Básicos: Objeto

encapsula dados (atributos) e funções encapsula dados (atributos) e funções (membros) => um objeto é uma abstração de (membros) => um objeto é uma abstração de dados e uma abstração de operações em uma dados e uma abstração de operações em uma mesma estruturamesma estrutura

possui uma interface de acesso bem definida possui uma interface de acesso bem definida (atributos e métodos internos são invisíveis ao (atributos e métodos internos são invisíveis ao meio externo “information hidding principle”)meio externo “information hidding principle”)

um objeto possui estado, comportamento e um objeto possui estado, comportamento e identidadeidentidade

Page 22: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

ObjetosObjetos

Page 23: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

ObjetoObjeto

Estado de um objeto: conjunto de valores Estado de um objeto: conjunto de valores associados às propriedades do objeto. Tais associados às propriedades do objeto. Tais propriedades representam características, atributos propriedades representam características, atributos ou qualidades associadas à entidade representada ou qualidades associadas à entidade representada pelo objetopelo objeto

O Comportamento de um Objeto descreve como se O Comportamento de um Objeto descreve como se processam as mudanças de seu estado em função processam as mudanças de seu estado em função de sua interação com o mundo externo. Tais de sua interação com o mundo externo. Tais mudanças são efetuadas através de operações mudanças são efetuadas através de operações realizadas pelo objetorealizadas pelo objeto

Page 24: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Exemplo de Objeto: EmpregadoExemplo de Objeto: Empregado

Um empregado de uma firma pode ser Um empregado de uma firma pode ser representado por um objeto. Todo representado por um objeto. Todo empregado tem um nome, carteira de empregado tem um nome, carteira de identidade, CIC, endereco, seção na qual identidade, CIC, endereco, seção na qual trabalha, salário, etc. Pode-se alterar o trabalha, salário, etc. Pode-se alterar o salário de um empregado, imprimir seu salário de um empregado, imprimir seu endereço, etc.endereço, etc.

Page 25: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Objetos Abstratos: ListaObjetos Abstratos: Lista

Dentro de um programa, uma lista pode Dentro de um programa, uma lista pode ser representada como um objeto. O ser representada como um objeto. O número de elementos é uma informação número de elementos é uma informação sobre o estado atual da lista. Elementos sobre o estado atual da lista. Elementos podem ser inseridos e removidos.podem ser inseridos e removidos.

Page 26: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Objetos 'Industriais'Objetos 'Industriais'

em especial, componentes de sistemas de em especial, componentes de sistemas de automação podem ser facilmente modelados com automação podem ser facilmente modelados com objetos: sensores, tanques, máquinas, etc.objetos: sensores, tanques, máquinas, etc.

ex: uma fresa em uma linha de produção pode ser ex: uma fresa em uma linha de produção pode ser modelada como um objeto. Cada fresa tem sua modelada como um objeto. Cada fresa tem sua especificação, rotação nominal, tensão, etc. especificação, rotação nominal, tensão, etc. Controla-se a fresa através de comandos para Controla-se a fresa através de comandos para mudar a posição, ligar/desligar, abaixar/levantar, mudar a posição, ligar/desligar, abaixar/levantar, etc..etc..

Page 27: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Conceitos Básicos: ClassesConceitos Básicos: Classes

Classe: objeto visto como um tipo Classe: objeto visto como um tipo abstrato, do qual pode-se gerar diversas abstrato, do qual pode-se gerar diversas cópias. Uma classe define, em um único cópias. Uma classe define, em um único local, propriedades comuns a todos as local, propriedades comuns a todos as instâncias desta classe.instâncias desta classe.

Instância: a partir de uma classe pode-se Instância: a partir de uma classe pode-se gerar diversas instâncias (objetos)gerar diversas instâncias (objetos)

Page 28: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

ClassesClasses

Page 29: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Classes e ObjetosClasses e Objetos

MundoMundoRealReal

veículoveículo

MarcaMarcaPlacaPlaca

ler_placaler_placa

FerrariFerrariIDN8810IDN8810

Fiat UnoFiat UnoIAS3333IAS3333

instânciasinstânciasclasseclasse

Page 30: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Objetos e ClassesObjetos e Classes

O estado de um objeto é representado O estado de um objeto é representado pelo conjunto de valores associados às pelo conjunto de valores associados às suas característicassuas características

esses valores são armazenados nas esses valores são armazenados nas variáveis de instância do objeto. Tais variáveis de instância do objeto. Tais variáveis são definidas na classe que gera variáveis são definidas na classe que gera o objetoo objeto

Page 31: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Objetos e ClassesObjetos e Classes

Uma classe define o comportamento de Uma classe define o comportamento de suas instânciassuas instâncias

Este comportamento é o conjunto de Este comportamento é o conjunto de operações que podem ser realizadas operações que podem ser realizadas pelos objetospelos objetos

Page 32: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Classes X Instâncias X ObjetosClasses X Instâncias X Objetos

Objetos são gerados a partir de classesObjetos são gerados a partir de classes

Uma classe define as propriedades e o Uma classe define as propriedades e o comportamento dos objetos gerados por elacomportamento dos objetos gerados por ela

Todo objeto é uma instância de uma classeTodo objeto é uma instância de uma classe

Page 33: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

ExemploExemploObjetosObjetos Funcionário Pedro Silva, CI 2819283399, Rua Funcionário Pedro Silva, CI 2819283399, Rua

Silva Só, 88 - Porto AlegreSilva Só, 88 - Porto Alegresalário R$ 1000,00salário R$ 1000,00

Funcionária Marta Andrade, CI 1234567891, Funcionária Marta Andrade, CI 1234567891, Rua Siqueira Campos, 29 - CarazinhoRua Siqueira Campos, 29 - Carazinhosalário R$ 600,00salário R$ 600,00

Classe FuncionárioClasse Funcionário Nome, CI, Endereco, SalárioNome, CI, Endereco, Salário

Page 34: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Leitura RecomendadaLeitura Recomendada

BECKER, L.B.; PEREIRA, C.E. BECKER, L.B.; PEREIRA, C.E. SIMOO-RT - An Object-SIMOO-RT - An Object-oriented Framework for the development of real-time oriented Framework for the development of real-time industrial automation systemsindustrial automation systems. Ieee Transactions On . Ieee Transactions On Robots Automation, v. 18, n. 4, p. 421-430, 2002. Robots Automation, v. 18, n. 4, p. 421-430, 2002.

KIM, Kane. KIM, Kane. APIs for real-time distributed object APIs for real-time distributed object programmingprogramming. IEEE Computer (special issue on OO RT . IEEE Computer (special issue on OO RT Distributed Computing), p. 72-80, June 2000.Distributed Computing), p. 72-80, June 2000.

Page 35: Introdução ao Paradigma de Orientação a Objetos Prof. Leandro Buss Becker mailto:lbecker@inf.pucrs.br

Referências BibliográficasReferências Bibliográficas

Rumbaugh, J. et al. “Rumbaugh, J. et al. “Modelagem e Modelagem e Projetos Baseados em ObjetosProjetos Baseados em Objetos“. Ed. “. Ed. Campus, 1994.Campus, 1994.