Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos...

138
Programação Orientada e Objetos Orientação a Objetos André Santanchè Instituto de Computação – UNICAMP Fevereiro 2019 Fantasia à Constantinople por Felix Ziem

Transcript of Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos...

Page 1: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Programação Orientada e Objetos

Orientação a Objetos

André SantanchèInstituto de Computação – UNICAMP

Fevereiro 2019

Fan

tasi

a à

Co

nst

anti

no

ple

po

r F

elix

Zie

m

Page 2: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Exercício 1Financiamento

Page 3: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Financiamento – Parte 1Problema

▪ Uma associação de bairro realiza empréstimos populares a juros baixos.

▪ Todo o controle de um empréstimo é feito em papel.

▪ No último ano a procura foi tão alta que a associação não está dando conta de controlar tantos empréstimos em papel.

Page 4: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Financiamento – Parte 1Problema

▪ Você foi contratado pela associação para resolver este problema do controle de empréstimos.

▪ Enumere em alto nível as ações que você realizaria do início até o final do processo uma vez contratado.

Page 5: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Ciclo de Desenvolvimento

▪ Levantamento de requisitos

▪ Projeto

▪ Implementação

▪ Avaliação

Page 6: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

By

Uni

vers

ity o

f Not

tingh

am

Giv

ing

dire

ctio

n by

Bat

oul Z

aite

r (C

.O.D

. Lib

rary

) on

Flic

kr

Levantamento de Requisitos

Page 7: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Universo de Discursoou Mini-mundo

▪ “Um banco de dados representa algum aspecto do mundo real, às vezes chamado de mini-mundo ou de universo de discurso (UoD – Universe of Discourse).”

(Elmasri & Navathe, 2011)

Page 8: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Universo de Discursoou Mini-mundo

▪ Recorte do mundo real a ser representado

m i n i m u n d o

f e ze m p r é s t i m o

e s c r e v e uD i n o l â n d i a

Page 9: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

m e m b r o :D o r i a n a

l i v r o :D i n o l â n d i a

e m p r é s t i m od a d o s

f e ze m p r é s t i m o

e s c r e v e uD i n o l â n d i a

m i n i m u n d o

a u t o r :H o r á r i o

a u t o r i a

Dados

▪ Fatos registrados – significado implícito

Page 10: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

d a d o sr e l a c i o n a d o s

m e m b r o :D o r i a n a

l i v r o :D i n o l â n d i a

e m p r é s t i m o

a u t o r :H o r á r i o

a u t o r i a

Banco de Dados

▪ Coleção de dados relacionados

Page 11: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Abstração

Page 12: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Problema x Abstração

▪ “Para resolver um problema é necessário escolher uma abstração da realidade” (Almeida, 2010)

Page 13: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Abstração

▪ “processo mental que consiste em escolher ou isolar um aspecto determinado de um estado de coisas relativamente complexo, a fim de simplificar a sua avaliação, classificação ou para permitir a comunicação do mesmo” (Houaiss, 2006)

▪ Abstrações ajudam a gerenciar a complexidade do software (Shaw, 1984)

Page 14: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Abstrações do Dia a Dia

Page 15: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Objetos em Engenharia de Software

Page 16: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Como Modelamos o Mundo?

Page 17: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Como modelamos o mundo?Ilusão dos Objetos

Page 18: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Intuitivo

Page 19: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Fan

tasi

a à

Co

nst

anti

no

ple

po

r F

elix

Zie

m

Page 20: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este
Page 21: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este
Page 22: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Objetos

▪ Montanha

Page 23: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Objetos

▪ Montanha

Page 24: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Objetos

▪ Montanha

Mo

un

tain

by

reve

rse

fau

lt b

y Ta

kam

i To

rao

Page 25: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Objetos

▪ Estação rodoviária

Page 26: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Noção de Objeto

▪ Psicologia do desenvolvimento:

▫ Quando crianças representam objetos como entidades permanentes?

▫ Que persistem:◦ Através do tempo e espaço

◦ À oclusão

(Santos & Hood, 2009)

Page 27: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Noção de Objetos▪ Objetos permanecem?

▫ “Of course, the concept of object permanence itself is really a misnomer, as all objects comprise energy in continuous states of change.” (Santos & Hood, 2009)

Page 28: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Noção de Objetos

▪ Objetos necessários

▫ “One of the most functionally relevant aspects of physical objects is the fact that they persist—standardly speaking, objects do not go in and out of existence and, thus, it is important that an organism be able to represent their continued presence even when they cannot be directly perceived or apprehended.” (Santos & Hood, 2009)

Page 29: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Noção de Objetos

▪ Existência independente do observador

▫ “[...] nervous systems were developed via natural selection to represent objects so that organisms may interact with the external world in an adaptive way, and thus, brains are built to capture what is functionally relevant about objects.” (Santos & Hood, 2009)

Page 30: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Formalizando Objetos

Por que formalizar?

Page 31: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

By

Uni

vers

ity o

f Not

tingh

am

Giv

ing

dire

ctio

n by

Bat

oul Z

aite

r (C

.O.D

. Lib

rary

) on

Flic

kr

Modelos e Comunicação

Page 32: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modelos e Comunicação

Page 33: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modelo Orientado a Objetos (OO)

Page 34: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Programação Orientada a Objetos

Page 35: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Sketchpad

▪ Programa desenvolvido em 1962

▪ Autor: Ivan Sutherland

▪ Influenciou a construção dos conceitos de interface gráfica e programação orientada a objetos

Fair use, https://en.wikipedia.org/w/index.php?curid=8641142

Page 36: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Sketchpad

Fair use, https://en.wikipedia.org/w/index.php?curid=8641142

Page 37: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

LISP

▪ Especificada em 1958

▪ Segunda linguagem de alto nível mais antiga (depois do FORTRAN) em uso hoje

▪ Tornou-se uma família de linguagens

▪ Foi pioneira em diversos conceitos

Page 38: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

LISP

Page 39: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

SIMULA 67

▪ Inicialmente uma linguagem para simulações que se tornou de propósito geral

▪ Primeira Linguagem Orientada a Objetos

▪ Desenvolvida em 1960 no Norwegian Computing Center em Oslo

▪ Autores: Ole-Johan Dahl and Kristen Nygaard

▪ Introduziu objetos, classes, herança, rotinas virtuais e coleta de lixo

Page 40: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modelo Orientado a Objetos

▪ SIMULA 67

▫ Primeira Linguagem Orientada a Objetos

▪ Smalltalk

▫ Projeto Dynabook

▫ “Este ‘Dynabook’ foi baseado na visão de computadores pessoais baratos do tamanho de um caderno, tanto para adultos quanto crianças, com a capacidade de lidar com todas as suas respectivas necessidades de informação”. [KRE98]

Page 41: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

As Duas Faces da OO

▪ Abordagem de abstração

▪ Estrutura de dados

Page 42: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Mania de ClassificarTodas as Canecas são a

mesma Caneca

Page 43: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Generalizando ou Estereotipando

Page 44: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Generalizando ou Estereotipando

Page 45: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Generalizando ou Estereotipando

Page 46: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Classes ou Estereótipos

▪ Cérebro – captura funcionalidade relevante dos objetos

(Santos & Hood, 2009)

▪ Generalização – essencial para sobrevivência

▫ memória – guarda estereótipos

▫ previsão das funcionalidades(Bloom, 2007)

Page 47: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

EstereótiposInvariantes e Propriedades

Page 48: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

ClassificandoInvariantes e Propriedades

PNEUM ATI Q UEPNEUM ATI Q UE

Page 49: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este
Page 50: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Desafios da Representação Compartilhada

Estereótipos

Page 51: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Desafios da Representação Compartilhada

Estereótipos

Page 52: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

EstereótiposAbstrações Humanas

▪ São o mundo real ou descrevem o mundo real?

Page 53: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Objetos e Memória

Page 54: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Memória de Curta Duração (Trabalho)

▪ Armazena:

▫ produtos intermediários do pensamento

▫ representações produzidas pelo Sistema Perceptual

▪ Operações mentais:

▫ obtém operandos

▫ deixam resultados intermediários

(Rocha, 2003)

Page 55: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Chunks

▪ “Conceitualmente a MCD é constituída de chunks: elementos ativados da MLD, que podem ser organizados em unidades maiores.”

(Rocha, 2003, p. 55)

Page 56: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Estereótipos▪ Capturar funcionalidade relevante

▫ “[...] nervous systems were developed via natural selection to represent objects so that organisms may interact with the external world in an adaptive way, and thus, brains are built to capture what is functionally relevant about objects.” (Santos & Hood, 2009)

Page 57: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Estereótipos

▪ Estereótipo

▫ “We tend to use the term to refer to information we have about categories and intuitions we have about the typicality, our frequency of certain features of categories.” (Bloom, 2007)

Page 58: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Estereótipos

▪ Essencial para sobrevivência

▫ And it turns out that collecting information about categories is essential to our survival. We see novel things all the time and if we were not capable of learning and making guesses, educated guesses, about these novel things we would not be able to survive. So, when you see this object over here you categorize it as a chair and you recognize that you could probably sit on it.” (Bloom, 2007)

Page 59: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Estereótipos

▪ Generalização

▫ “And if you were suddenly stripped of your ability to make generalizations, you'd be at a loss. You wouldn't know what to eat, how to interact. So, some sort of ability to record information and make generalizations is absolutely essential to making it through life.” (Bloom, 2007)

Page 60: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modelos

▪ São fundamentais para:

▫ Percepção (propósito e funcionalidades)

▫ Memória

▫ Comunicação

▪ Percebemos o mundo em objetos

▪ Os generalizamos e classificamos

Page 61: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

As Duas Faces da OO

▪ Abordagem de abstração

▪ Estrutura de dados

Page 62: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Segunda FaceEstrutura de Dados

Page 63: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Abstrações em Computação

Tipo Abstrato de Dados

Page 64: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Tipo Abstrato de Dados (TAD)Abstract Data Type (ADT)

▪ “O termo 'tipo abstrato de dados' se refere ao conceito matemático básico que define um tipo de dados” (Tenenbaum, 1990)

▪ Conceito matemático

▫ Não considera aspectos de implementação◦ Ex.: eficiência de tempo e espaço

(Tenenbaum, 1990)

Page 65: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Tipo Abstrato de Dados (TAD)Abstract Data Type (ADT)

▪ “Um tipo abstrato de dados define uma classe de objetos abstratos que é completamente caracterizada pelas operações disponíveis nestes objetos. Isto significa que um tipo abstrato de dados pode ser definido pela definição e caracterização das operações daquele tipo.” (Liskov, 1974)

Page 66: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Exercício 1 - Empréstimo

▪ Escreva um módulo para calcular a próxima parcela de um financiamento

▪ Dados disponíveis

▫ S - valor da primeira parcela

▫ N - número de parcelas

▫ J – percentual de juros mensal

▪ Cada nova parcela é sempre calculada em relação à anterior:

Patual

= Panterior

mais Juros

Page 67: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Classe – Arquitetura Modular

Page 68: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Estudo de Caso 1

Modularização Sucessiva

Page 69: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Primeira Versão

CPrograma sem modularização

Page 70: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Primeira Versão#include <stdio.h>

int main() { float s = 200; int n = 5; float j = 1; float p = s; for (int i = 1; i <= n; i++) { printf("O valor da parcela %d eh %3.2f\n", i, p); p = p + (p * (j/100)); } }

Page 71: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Segunda Versão

CPrograma com modularização básica –

apenas funções

Page 72: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Segunda Versão#include <stdio.h>

float es;int en;float ej;int corrente;float p;

void novoEmprestimo(float s, int n, float j) { es = s; en = n; ej = j; corrente = 1; p = s;}

Page 73: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Segunda Versãofloat proximaParcela() { float retorno = p; corrente++; if (corrente <= en) p = p + (p * (ej/100)); else p = 0; return retorno;}

int main() { novoEmprestimo(200, 5, 1); int i = 1; float p = proximaParcela(); while (p > 0) { printf("O valor da parcela %d eh %3.2f\n", i, p); p = proximaParcela(); i++; } }

Page 74: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Segunda Versão

▪ Vantagens:

▫ Módulos encapsulam a lógica do cálculo de combinações, de forma que ela possa ser reusada.

Page 75: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Segunda Versão

▪ Problemas:

▫ Os módulos depende das variáveis globais do módulo principal.

▫ O módulo principal se torna responsável por detalhes de implementação dos módulos, o que prejudica o reuso:◦ cada vez que um programa reusar os módulos precisará

declarar as variáveis;

◦ as novas variáveis declaradas podem entrar em conflito com outras já existentes, o que exige modificação do código.

Page 76: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Terceira Versão

C

Transferência das variáveis globais para os módulos, a fim de remover a dependência

Uma variável global é declarada e passada como parâmetro para os módulos

Page 77: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Terceira Versão#include <stdio.h>

void novoEmprestimo(float s, int n, float j, int *corrente, float *p) { *corrente = 1; *p = s;}

void proximaParcela(float s, int n, float j, int *corrente, float *p) { (*corrente)++; if (*corrente <= n) *p = *p + (*p * (j/100)); else *p = 0;}

Page 78: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Terceira Versãoint main() { int corrente; float p; novoEmprestimo(200, 5, 1, &corrente, &p); int i = 1; while (p > 0) { printf("O valor da parcela %d eh %3.2f\n", i, p); proximaParcela(200, 5, 1, &corrente, &p); i++; } }

Page 79: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Terceira Versão

▪ Vantagens:

▫ A variável do módulo principal se torna independente da variável dos módulos (o nome pode ser diferente).

▪ Problemas:

▫ O módulo principal continua precisando declarar e manter as variáveis globais, o que ainda causa dependência das funções.

▫ Neste ponto esgotam-se as possibilidades da modularização baseada em funções.

Page 80: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Quarta Versão

C++Classe

Page 81: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sétima Versão – Bits07Instancia.hclass Bits07Instancia

{

int combinacoes;

public:

Bits07Instancia();

int proximoNumeroCombinacoes();

};

Page 82: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sétima Versão – Bits07Instancia.cpp#include "Bits07Instancia.h"

Bits07Instancia::Bits07Instancia()

{

combinacoes = 1;

}

int Bits07Instancia::proximoNumeroCombinacoes()

{

combinacoes *= 2;

return combinacoes;

}

Page 83: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sétima Versão – Bits07.c#include <stdio.h>

#include "Bits07Instancia.h"

int main () {

Bits07Instancia objeto;

int bits;

for (bits = 1; bits <= 8; bits++)

printf("%d bits = %d combinacoes\n", bits, objeto.proximoNumeroCombinacoes());

}

Page 84: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sexta Versão

JavaO módulo é transformada em uma classe

Page 85: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sexta Versão – Classepackage pt.c02oo.s01estudocaso.s06classe;

public class Bits06Classe{ static int combinacoes; static void inicializa() { combinacoes = 1; } static int proximoNumeroCombinacoes() { combinacoes *= 2; return combinacoes; }}

Page 86: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sexta Versão – Programa Principalpackage pt.c02oo.s01estudocaso.s06classe;

public class Bits06{ public static void main(String args[]) { Bits06Classe.inicializa(); for (int bits = 1; bits <= 8; bits++) System.out.println(bits + " = " + Bits06Classe.proximoNumeroCombinacoes()); }}

Page 87: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sétima Versão

JavaClasse com instância

Page 88: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sétima Versão – Classepackage pt.c02oo.s01estudocaso.s07objeto;

public class Bits07Instancia{ int combinacoes; Bits07Instancia() { combinacoes = 1; } int proximoNumeroCombinacoes() { combinacoes *= 2; return combinacoes; }}

Page 89: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sétima Versão – Programa Principalpackage pt.c02oo.s01estudocaso.s07objeto;

public class Bits07{ public static void main(String args[]) { Bits07Instancia objeto; objeto = new Bits07Instancia(); for (int bits = 1; bits <= 8; bits++) System.out.println(bits + " = " + objeto.proximoNumeroCombinacoes()); }}

Page 90: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Estudo de Caso 1

Modularização Sucessiva

▪ Programa que calcula e apresenta o número de combinações possíveis que podem ser realizadas com bits, que variam de 1 a 8.

▪ Mostra etapas sucessivas do processo de modularização, até se chegar à classe.

Page 91: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Primeira Versão

CPrograma sem modularização

Page 92: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Primeira Versão#include <stdio.h>

int main(){ int combinacoes = 1, bits;

for (bits = 1; bits <= 8; bits++) { combinacoes *= 2; printf("%d bits = %d combinacoes", bits, combinacoes); }

return 0;}

Page 93: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Segunda Versão

CPrograma com modularização básica –

apenas funções

Page 94: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Segunda Versãoint combinacoes;

void inicializa() { combinacoes = 1;}

int proximoNumeroCombinacoes() { combinacoes *= 2; return combinacoes;}

int main() { int bits; inicializa(); for (bits = 1; bits <= 8; bits++) printf("%d bits = %d combinacoes", bits, proximoNumeroCombinacoes()); return 0;}

Page 95: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Segunda Versão

▪ Vantagens:

▫ Módulos encapsulam a lógica do cálculo de combinações, de forma que ela possa ser reusada.

Page 96: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Segunda Versão

▪ Problemas:

▫ Os módulos dependem do programa principal que mantém a variável "combinacoes".

▫ O programa principal se torna responsável por detalhes de implementação dos módulos, o que prejudica o reuso:◦ cada vez que um programa reusar os módulos precisará

declarar a variável "combinacoes";

◦ a nova variável "combinacoes" declarada pode entrar em conflito com uma já existente, o que exige modificação do código.

Page 97: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Terceira Versão

CTentativa de transferir a variável

"combinacoes" para os módulos, a fim de remover a dependência

Page 98: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Terceira Versãovoid inicializa() { int combinacoes; combinacoes = 1;}

int proximoNumeroCombinacoes() { int combinacoes; combinacoes *= 2; return combinacoes;}

int main() { int bits; inicializa(); for (bits = 1; bits <= 8; bits++) printf("%d bits = %d combinacoes", bits, proximoNumeroCombinacoes());}

Page 99: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Terceira Versão

▪ Erro de execução:

▫ A variável local e criada e destruída a cada entrada/saída de cada um dos módulos, impossibilitando a continuidade desejada.

Page 100: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Quarta Versão

CUma variável global é declarada e passada

como parâmetro para os módulos

Page 101: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Quarta Versãovoid inicializa(int *combinacoes) { *combinacoes = 1;}

int proximoNumeroCombinacoes(int *combinacoes) { *combinacoes *= 2; return *combinacoes;}

int main() { int combinacoes; int bits;

inicializa(&combinacoes);

for (bits = 1; bits <= 8; bits++) printf("%d bits = %d combinacoes\n", bits, proximoNumeroCombinacoes(&combinacoes));}

Page 102: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Quarta Versão

▪ Vantagens:

▫ A variável do programa principal se torna independente da variável dos módulos (o nome pode ser diferente).

▪ Problemas:

▫ O programa principal continua precisando declarar e manter a variável "combinacoes", o que ainda causa dependência dos módulos

▫ Neste ponto esgotam-se as possibilidades da modularização baseada em procedures e functions.

Page 103: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Quinta Versão

COs módulos menores (funções) são

colocados dentro de um módulo maior

Page 104: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Quinta Versão – bits05module.hvoid inicializa();

int proximoNumeroCombinacoes();

Page 105: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Quinta Versão – bits05module.c#include "bits05module.h"

static int combinacoes;

void inicializa(){ combinacoes = 1;}

int proximoNumeroCombinacoes(){ combinacoes *= 2; return combinacoes;}

Page 106: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Quinta Versão – bits05.c#include "bits05module.h"

int main(){ int bits;

inicializa();

for (bits = 1; bits <= 8; bits++) printf("%d bits = %d combinacoes", bits, proximoNumeroCombinacoes());

return 0;}

Page 107: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Quinta Versão

▪ Vantagens:

▫ O módulo expõe apenas as interfaces das funções, escondendo detalhes da implementação

▫ O módulo controla e mantém o estado da variável "combinacoes", que não e visível para o programa principal.

Page 108: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Quinta Versão

▪ Problemas:

▫ O módulo funciona para apenas uma instância. Se precisássemos de dois cálculos de combinações em paralelo teríamos problemas.

▫ O uso de múltiplas instâncias é possível mas complicado.

Page 109: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sexta/Sétima Versão

C++Classe

Page 110: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sétima Versão – Bits07Instancia.hclass Bits07Instancia

{

int combinacoes;

public:

Bits07Instancia();

int proximoNumeroCombinacoes();

};

Page 111: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sétima Versão – Bits07Instancia.cpp#include "Bits07Instancia.h"

Bits07Instancia::Bits07Instancia()

{

combinacoes = 1;

}

int Bits07Instancia::proximoNumeroCombinacoes()

{

combinacoes *= 2;

return combinacoes;

}

Page 112: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sétima Versão – Bits07.c#include <stdio.h>

#include "Bits07Instancia.h"

int main () {

Bits07Instancia objeto;

int bits;

for (bits = 1; bits <= 8; bits++)

printf("%d bits = %d combinacoes\n", bits, objeto.proximoNumeroCombinacoes());

}

Page 113: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sexta Versão

JavaO módulo é transformada em uma classe

Page 114: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sexta Versão – Classepackage pt.c02oo.s01estudocaso.s06classe;

public class Bits06Classe{ static int combinacoes; static void inicializa() { combinacoes = 1; } static int proximoNumeroCombinacoes() { combinacoes *= 2; return combinacoes; }}

Page 115: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sexta Versão – Programa Principalpackage pt.c02oo.s01estudocaso.s06classe;

public class Bits06{ public static void main(String args[]) { Bits06Classe.inicializa(); for (int bits = 1; bits <= 8; bits++) System.out.println(bits + " = " + Bits06Classe.proximoNumeroCombinacoes()); }}

Page 116: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sétima Versão

JavaClasse com instância

Page 117: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sétima Versão – Classepackage pt.c02oo.s01estudocaso.s07objeto;

public class Bits07Instancia{ int combinacoes; Bits07Instancia() { combinacoes = 1; } int proximoNumeroCombinacoes() { combinacoes *= 2; return combinacoes; }}

Page 118: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Modularização Sucessiva

Sétima Versão – Programa Principalpackage pt.c02oo.s01estudocaso.s07objeto;

public class Bits07{ public static void main(String args[]) { Bits07Instancia objeto; objeto = new Bits07Instancia(); for (int bits = 1; bits <= 8; bits++) System.out.println(bits + " = " + objeto.proximoNumeroCombinacoes()); }}

Page 119: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este
Page 120: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este
Page 121: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

OO: Herança

Page 122: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

UML: HerançaPessoa

-código: String-nome: String-telefone: int

Funcionário-admissão: Date-função: String

Associado-associação: Date

Page 123: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Especialização total x Classe abstrata

especialização total x classe abstrata

d a t a a s s o c i a ç ã od a t a a d m i s s ã o f u n ç ã o

F U N C I O N Á R I O A S S O C I A D O

P E S S O A

c ó d i g o

n o m e

t e l e f o n e

c t

Pessoa-código: String-nome: String-telefone: int

Funcionário-admissão: Date-função: String

Associado-associação: Date

Page 124: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

UML: HerançaMídia

-código: String-título: String-ano: int-categoria: String

Livro-ISBN: String-autor: String

DVD-diretor: String-produtor: String

Page 125: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

M Í D I A

c ó d i g o

t í t u l o

a n o

L I V R O

a u t o rI S B N

c a t e g o r i a

p r o d u t o rd i r e t o r

D V D

x p

Especialização parcial x Classe

?Mídia

-código: String-título: String-ano: int-categoria: String

Livro-ISBN: String-autor: String

DVD-diretor: String-produtor: String

Page 126: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

(Chen, 1976)

Page 127: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Exercícioparte 3

▪ Vírus podem ser classificados em diversas categorias. A categoria retrovírus é tratada com coquetéis de medicamentos. Um coquetel é composto por vários medicamentos, cada um em uma concentração específica.

▪ Os tratamentos de retrovírus baseados em coquetéis também devem especificar dosagens específicas por tipo de paciente.

▪ Considere dois cenários de restrição:

▫ somente retrovírus são tratados com coquetéis

▫ retrovírus só são tratados com coquetéis

Page 128: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Caso dos Taxis

▪ Exemplo criado por prof. Geovane Cayres Magalhães▫ http://www.ic.unicamp.br/~geovane/mo410-091/caso.htm

l

Page 129: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

L i m i t eD e

1

N

E n d - D e i x a r

E n d e r e ç oR e s i d e n c i a l

A t é

E n d - A p a n h a r

1

N

@

1

1

1

Z o n a

Z o n a

F i l a

D a t a H o r a I n *K M I n *

C o r r i d aA g e n d a d a

D a t a P e d i d oD a t a H o r a C o r r i d a

1

N

1

1

L o g r a d o u r o

L o g I dN o m e

C i d a d eE s t a d o

N u m e r a ç ã o

N ú m e r o

[ C o m p l e m e n t o ][ B a i r r o ]

[ C E P ]

C l i e n t e

C l i I dN o m e[ C P F ]

[ C G C ]

1

N

N0

1

1

N

N

N

L e g e n d a :[ ] - a t r i b u t o o p c i o n a l* - i n f o r m a ç ã o p r e e n c h i d a a p ó s i n c l u s ã o i n i c i a l@ - u m t á x i s ó p o d e a p a r e c e r u m a v e z n a f i l a

C o r r i d aE f e t i v a d a

H o r a I n í c i o F i l a

H o r a D e i x o uK m F i n a l

H o r a A p a n h o u

1

1

N

1

M o t o r i s t a

C N HN o m e

C N H V a l i d

T a x i

P l a c aM a r c a

M o d e l oA n o F a bL i c e n ç a

M T

E n d e r e ç o

1

1

1

N

1

1

1 1N N

por prof. Geovane Cayres Magalhães

Page 130: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Referências

▪ Chen, Peter Pin-Shan (1976) The entity-relationship model – toward a unified view of data. ACM Trans. Database Systems, ACM, 1, 9-36.

▪ Elmasri, Ramez; Navathe, Shamkant B. (2005) Sistemas de Bancos de Dados. Addison-Wesley, 4a edição em português.

▪ Guimarães, Célio (2003) Fundamentos de Bancos de Dados: Modelagem, Projeto e Linguagem SQL. Editora UNICAMP, 1a edição.

▪ Heuser, Carlos Alberto (2004) Projeto de Banco de Dados. Editora Sagra Luzzato, 5a edição.

Page 131: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Referências

▪ Ramakrishnan, Raghu; Gehrke, Johannes (2003) Database Management Systems. McGraw-Hill, 3rd edition.

Page 132: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Referências Bibliográficas

▪ Almeida, Charles Ornelas , Guerra, Israel; Ziviani, Nivio (2010) Projeto de Algoritmos (transparências aula).

▪ Bloom, Paul (2007) Introduction to Psychology – transcrição das aulas (aula 17). Yale University.

▪ Ferreira, Aurélio B. H. (1989) Minidicionário da Língua Portuguesa. Rio de Janeiro, Editora Nova Fronteira.

▪ Houaiss, Instituto Antônio. Dicionário Houaiss da língua portuguesa (2006) Editora Objetiva, Março.

▪ IBM - International Business Machines Corporation. IBM Smalltalk Tutorial [Online] http://www.wi2.uni-erlangen.de/sw/smalltalk/

▪ Liskov, Barbara; Zilles, Stephen. Programming with abstract data types (1974) ACM SIGPLAN Notices, 9 (4) p. 50.

Page 133: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Referências Bibliográficas

▪ McCarthy, J.; Brayton, R.; Edwards, D.; Fox, P.; Hodes, L.; Luckham, D.; Maling, K.; Park, D.; Russell, S. (March 1960). LISP I Programmers Manual. Boston, Massachusetts: Artificial Intelligence Group, M.I.T. Computation Center and Research Laboratory: 88f.

▪ Meyer, Bertrand (1997) Object-Oriented Software Construction – Second Edition. USA, Prentice-Hall, Inc.

▪ Miller, Robert (2004) 6.831 User Interface Design and Implementation (lecture notes). MIT OpenCourseware.

Page 134: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Referências Bibliográficas

▪ Rocha, Heloisa Vieira da, Baranauskas, Maria Cecilia Calani (2003) Design e Avaliação de Interfaces Humano-Computador. NIED/UNICAMP.

▪ Santos, L. R., & Hood, B. M. (2009). Object representation as a central issue in cognitive science. The Origins of Object Knowledge: The Yale Symposium on the Origins of Object & Number Representation. Oxford: Oxford University Press.

▪ Shaw, M. Abstraction Techniques in Modern Programming Languages (1984) IEEE Software, 1, 4, 10-26.

▪ Tenenbaum, Aaron M.; Langsam, Yedidyah; Augenstein, Moshe J. Data Structures Using C (1990) Prentice Hall, Upper Saddle River, NJ.

Page 135: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Referências

▪ Bloom, Paul (2007) Introduction to Psychology – transcrição das aulas (aula 17). Yale University.

▪ Chen, Peter Pin-Shan (1976) The entity-relationship model – toward a unified view of data. ACM Trans. Database Systems, ACM, 1, 9-36.

▪ Dijkstra, E. W. (1986) On a cultural gap. The Mathematical Intelligencer. vol. 8, no. 1, pp. 48-52.

▪ Elmasri, Ramez; Navathe, Shamkant B. (2005) Sistemas de Bancos de Dados. Addison-Wesley, 4a. edição em português.

▪ Elmasri, Ramez; Navathe, Shamkant B. (2011) Sistemas de Bancos de Dados. Pearson, 6a. edição em português.

▪ Guimarães, Célio (2003) Fundamentos de Bancos de Dados: Modelagem, Projeto e Linguagem SQL. Editora UNICAMP, 1a. edição.

Page 136: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Agradecimentos

▪ Luiz Celso Gomes Jr (professor desta disciplina em 2014) pela contribuição na disciplina e nos slides.

Page 137: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

André Santanchèhttp://www.ic.unicamp.br/~santanche

Page 138: Orientação a Objetossantanch/teaching/oop/2019-1/slides/poo0101... · Modelo Orientado a Objetos SIMULA 67 Primeira Linguagem Orientada a Objetos Smalltalk Projeto Dynabook “Este

Licença▪ Estes slides são concedidos sob uma Licença Creative

Commons. Sob as seguintes condições: Atribuição, Uso Não-Comercial e Compartilhamento pela mesma Licença.

▪ Mais detalhes sobre a referida licença Creative Commons veja no link:http://creativecommons.org/licenses/by-nc-sa/3.0/

▪ Fotografia da capa feita por André Santanchè no Petit Palais (Paris) em 17/02/2013 do quadro: Fantasia à Constantinople de Felix Ziem