programação orientada a objetos fundamentos de orientação a...

69
Programação Orientada a Objetos Fundamentos de Orientação a Objetos Objetos e Classes André Santanchè Institute of Computing – UNICAMP Março 2015 Picture by http://www.flickr.com/photos/crouchy69, 2010

Upload: duongkhuong

Post on 08-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Programação Orientada a Objetos

Fundamentos de Orientação a ObjetosObjetos e Classes

André SantanchèInstitute of Computing – UNICAMP

Março 2015

Pic

ture

by

htt

p:/

/ww

w.f

lickr

.co

m/p

ho

tos/

cro

uch

y69,

201

0

Page 2: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Orientação a Objetos

Page 3: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Um pouco de história

▪ 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 4: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

As Duas Faces da OO

▪ Abordagem de abstração

▪ Estrutura de dados

Page 5: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Primeira FaceAbordagem de Abstração

Page 6: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Problema, Abstração e Tipo Abstrato de Dados

Page 7: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Problema x Abstração

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

Page 8: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Universo de Discursoou Mini-mundo

▪ Recorte do mundo real a ser representado

minimundo

fezempréstimo

escreveuDinolândia

Page 9: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

membro:Doriana

livro:Dinolândia

empréstimodados

fezempréstimo

escreveuDinolândia

minimundo

autor:Horário

autoria

Dados

▪ Fatos registrados – significado implícito

Page 10: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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 11: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Abstrações do Dia a Dia

Page 12: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Como Modelamos o Mundo?

Page 13: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Como modelamos o mundo?Ilusão dos Objetos

Page 14: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Fan

tasi

a à

Co

nst

anti

no

ple

po

r F

elix

Zie

m

Page 15: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under
Page 16: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under
Page 17: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Objetos

▪ Montanha

Page 18: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Objetos

▪ Montanha

Page 19: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Objetos

▪ Montanha

Mo

un

tain

by

reve

rse

fau

lt b

y Ta

kam

i To

rao

Page 20: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Objetos

▪ Estação rodoviária

Page 21: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Ilusão dos Objetos

▪ Existência independente

▪ Permanecem

(Santos & Hood, 2009)

Page 22: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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 23: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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 24: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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 25: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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 26: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Formalizando Objetos

Por que formalizar?

Page 27: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

By

Uni

vers

ity o

f Not

tingh

am

Giv

ing

dire

ctio

n b

y B

atou

l Zai

ter

(C.O

.D. L

ibra

ry)

on F

lickr

Modelos e Comunicação

Page 28: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Modelos e Comunicação

Page 29: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Objetos em Bancos de Dados

Page 30: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Projeto de um BD

Modelo Conceitual

Banco de Dados

Visão Externa 1 Visão Externa 2 Visão Externa n

Usuários Finais

Modelo Lógico

Modelo Físico

esquema conceitual

esquema lógico

esquema físico

requisitos requisitos requisitos

Independente de SGBD

Dependente de SGBD

(Guimarães, 2003)

Page 31: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Objetos em Engenharia de Software

Page 32: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Modelo em Cascata

(PRESSMAN, 2006)

COMUNICAÇÂO

PLANEJAMENTO

MODELAGEM

CONSTRUÇÃO

IMPLANTAÇÃO

Iniciação do projeto

Levantamento de requisitos

Estimativas

Cronogramas

Monitoração

Codificação

Testes

Entrega

Manutenção

Análise

Projeto

Engenharia de Software – José Maria N. David

32

Page 33: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Projeto Iterativo

Page 34: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

FormalEntidades / Objetos

Page 35: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Modelo Entidade-Relacionamento (ER)

Page 36: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Modelo Entidade-Relacionamento

▪ Padrão para modelagem conceitual

▪ Criada por Peter Chen em 1976

Page 37: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Entidade

Page 38: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Entidade

▪ Objeto do universo de discurso

▪ Identificável distintamente

▪ Existência independente

Pessoa

Livro

Departamentode uma

Organização

Categoriade umLivo

Page 39: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Modelo Orientado a Objetos (OO)

Page 40: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Objeto

Page 42: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Objeto

▪ Objeto do universo de discurso

▪ Identificável distintamente

▪ Existência independente

Pessoa

Livro

Departamentode uma

Organização

Categoriade umLivo

Page 43: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Objeto

Objetos são caracterizados por:

▫ identidade;

▫ atributos;

▫ comportamento.

Pessoa

Livro

Departamentode uma

Organização

Categoriade umLivo

Page 44: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Exemplo de ObjetoEsfera Vermelha

Atributos (nome, valor)

(cor, vermelha)

(elasticidade, alta)

(raio, 60 cm)

(peso, 200 g)

aumentar, diminuir, se mover

Comportamento

Objeto Esfera

Page 45: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Exemplo de ObjetoUm Financiamento

Atributos (nome, valor)

(percentual de juros, 1%)

(número de parcelas, 3)

(valor, R$ 150)

calcula parcela

Comportamento

Objeto Financiamento

Page 46: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Mania de ClassificarTodas as Canecas são a

mesma Caneca

Page 47: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Generalizando ou Estereotipando

Page 48: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Generalizando ou Estereotipando

Page 49: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Generalizando ou Estereotipando

Page 50: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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 51: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

EstereótiposInvariantes e Propriedades

Page 52: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

ClassificandoInvariantes e Propriedades

Page 53: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under
Page 54: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

ClassificandoInvariantes e Propriedades

Page 55: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

ClassificandoInvariantes e Propriedades

Page 56: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

EstereótiposAbstrações Humanas

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

Page 57: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Objetos e Memória

Page 58: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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 59: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Chunks

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

(Rocha, 2003, p. 55)

Page 60: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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 61: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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 62: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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 63: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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 64: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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 65: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Referências Bibliográficas

▪ 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.

▪ 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.

Page 66: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Referências Bibliográficas

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

Page 67: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

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

Page 68: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

License▪ These slides are shared under a Creative Commons License.

Under the following conditions: Attribution, Noncommercial and Share Alike.

▪ See further details about this Creative Commons license at:http://creativecommons.org/licenses/by-nc-sa/3.0/

Page 69: Programação Orientada a Objetos Fundamentos de Orientação a …santanch/teaching/oop/2015-1/slides/poo0201... · Psicologia do desenvolvimento: ... These slides are shared under

Imagens Externas

▪ Havang(nl) [http://commons.wikimedia.org/wiki/User:Havang%28nl%29]url (ver licença específica): http://commons.wikimedia.org/wiki/File:Bomenpark_Meijhorst,_Nijmegen_%28Gld,_NL%29.jpg

▪ Eric Gaba [http://commons.wikimedia.org/wiki/User:Sting]url (ver licença específica): http://commons.wikimedia.org/wiki/File:Easter_Island_map-hu.svg

▪ Kharker [http://en.wikipedia.org/wiki/User:Kharker]url (ver licença específica): http://commons.wikimedia.org/wiki/File:Ardf_map.png