Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1...
Transcript of Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1...
![Page 1: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/1.jpg)
Programação Orientada a Objetos
Formalismos e Programação OOObjetos e Classes
André Santanchè e Oscar RojasInstitute 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 Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/2.jpg)
FormalEstereótipos / Classes
![Page 3: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/3.jpg)
Universo deDiscurso
Modelo
Generalização
Instancias
Rhacophytales
color
height
Rhacophytales (1)
color
height 13
Rhacophytales (2)
color
height 10
![Page 4: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/4.jpg)
color
height
Rhacophytales (1)
color
height 13
atributos
estereótipo
instância
valores deatributos
Rhacophytales
![Page 5: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/5.jpg)
ER: Tipo Entidade
![Page 6: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/6.jpg)
Tipo Entidade
▪ Tipo Entidade ou Conjunto de Entidades
▫ conjunto não disjunto
▫ entidades similares – mesmos atributos
Conjuntode Pessoas
Conjuntode Livros
![Page 7: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/7.jpg)
Tipo Entidade
▪ Representação:
Conjuntode Pessoas
Conjuntode Livros
Pessoa Livro
![Page 8: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/8.jpg)
OO: Classe
![Page 9: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/9.jpg)
Abstrações em Computação
Tipo Abstrato de Dados
![Page 10: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/10.jpg)
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 11: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/11.jpg)
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 12: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/12.jpg)
Classe
"Numa série ou num conjunto, grupo ou divisão que apresenta características ou atributos semelhantes." (Ferreira, 1989)
▪ Classificação de Carl Linné
![Page 13: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/13.jpg)
Classe
▪ Quando realizamos uma classificação de objetos, identificamos o seu comportamento e as características que eles possuem em comum.
▪ Classes definem:
▫ Atributos que irão descrever o objeto;
▫ Métodos que definem o comportamento dos mesmos.
![Page 14: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/14.jpg)
Objetos e Classes
▪ Os objetos são organizados/divididos em grupos chamados classes.
▪ Objetos da mesma classe têm:
▫ o mesmo conjunto de atributos (os valores dos atributos podem ser diferentes);
▫ o mesmo conjunto de métodos.
![Page 15: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/15.jpg)
UMLUnified Modeling Language
▪ http://www.uml.org/
▪ Desenvolvida entre 1994-96
▪ Criadores
▫ Grady Booch, Ivar Jacobson and James Rumbaugh na Rational Software
▪ Padrão OMG em 1997
▫ OMG - Object Management Group
▫ http://omg.org/
(Wikipedia, 2015)
![Page 16: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/16.jpg)
UML
ClassePessoa Livro Circulo
![Page 17: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/17.jpg)
UML
Instância de ClassePessoa Livro Circulo
umaPessoa umLivro umCirculo
![Page 18: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/18.jpg)
UML
Instância de Classe (alternativa)
umaPessoa: Pessoa umaLivro: Livro umCirculo: Circulo
![Page 19: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/19.jpg)
UML
Atributos (propriedades)
Pessoacodigo: Stringnome: Stringtelefone: int
isbn: Stringtitulo: Stringautor: Stringano: intcategoria: String
Livro CirculocentroX: intcentroY: intraio: int
![Page 20: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/20.jpg)
UML
Instância com valores de atributos
CirculocentroX: intcentroY: intraio: int
umCirculoCentroX = 5CentroY = 3Raio = 10
![Page 21: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/21.jpg)
color
height
Rhacophytales (1)
color
height 13
instância
Rhacophytales
color: ColorTypeheight: int
R1
color = greenheight = 13
Rhacophytales
![Page 22: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/22.jpg)
UML
Métodos (operações)
Circulo
area() : double setRaio(novo: int)
centroX: intcentroY: intraio: int
![Page 23: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/23.jpg)
Exemplo de ClasseEsfera
Atributos (nome, tipo)
(cor, color)
(elasticidade, string)
(raio, real)
(peso, real)
aumentar, diminuir, se mover
Comportamento
Classe Esfera
![Page 24: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/24.jpg)
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 25: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/25.jpg)
Exemplo de ClasseFinanciamento
Atributos (nome, tipo)
(percentual de juros, real)
(número de parcelas, inteiro)
(valor, real)
calcula parcela
Comportamento
Classe Financiamento
![Page 26: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/26.jpg)
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 27: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/27.jpg)
Segunda FaceEstrutura de Dados
![Page 28: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/28.jpg)
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 29: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/29.jpg)
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 30: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/30.jpg)
Classe – Arquitetura Modular
![Page 31: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/31.jpg)
Estudo de Caso 1
Modularização Sucessiva
![Page 32: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/32.jpg)
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 33: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/33.jpg)
Modularização Sucessiva
Primeira Versão
CPrograma sem modularização
![Page 34: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/34.jpg)
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 35: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/35.jpg)
Modularização Sucessiva
Segunda Versão
CPrograma com modularização básica – apenas
funções
![Page 36: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/36.jpg)
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 37: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/37.jpg)
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 38: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/38.jpg)
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 precisara 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 39: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/39.jpg)
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 40: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/40.jpg)
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 41: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/41.jpg)
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 42: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/42.jpg)
Modularização Sucessiva
Quarta Versão
CUma variável global é declarada e passada como
parâmetro para os módulos
![Page 43: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/43.jpg)
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 44: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/44.jpg)
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 45: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/45.jpg)
Modularização Sucessiva
Quinta Versão
COs módulos menores (funções) são colocados
dentro de um módulo maior
![Page 46: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/46.jpg)
Modularização Sucessiva
Quinta Versão – bits05module.hvoid inicializa();
int proximoNumeroCombinacoes();
![Page 47: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/47.jpg)
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 48: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/48.jpg)
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 49: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/49.jpg)
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 50: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/50.jpg)
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 51: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/51.jpg)
Modularização Sucessiva
Sexta/Sétima Versão
C++Classe
![Page 52: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/52.jpg)
Modularização Sucessiva
Sétima Versão – Bits07Instancia.hclass Bits07Instancia
{
int combinacoes;
public:
Bits07Instancia();
int proximoNumeroCombinacoes();
};
![Page 53: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/53.jpg)
Modularização Sucessiva
Sétima Versão – Bits07Instancia.cpp#include "Bits07Instancia.h"
Bits07Instancia::Bits07Instancia()
{
combinacoes = 1;
}
int Bits07Instancia::proximoNumeroCombinacoes()
{
combinacoes *= 2;
return combinacoes;
}
![Page 54: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/54.jpg)
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 55: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/55.jpg)
Modularização Sucessiva
Sexta Versão
JavaO módulo é transformada em uma classe
![Page 56: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/56.jpg)
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 57: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/57.jpg)
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 58: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/58.jpg)
Modularização Sucessiva
Sétima Versão
JavaClasse com instância
![Page 59: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/59.jpg)
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 60: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/60.jpg)
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 61: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/61.jpg)
Objeto
“O que se apresenta à percepção com um caráter fixo e estável”. (Ferreira, 1989)
_______________
▪ Objetos são caracterizados por:
▫ identidade;
▫ atributos;
▫ comportamento.
![Page 62: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/62.jpg)
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 63: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/63.jpg)
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 64: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/64.jpg)
Objetos em JavaScript
![Page 65: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/65.jpg)
Objetos JS{ }
{ "nome": "Asdrubal", "idade": 25}
{ "nome": "Unidos da Esquina", "vitorias": [1961, 1975, 1982]}
vazio
obj_pessoa
nome: “Asdrubal”idade: 25
obj_time
nome: “Unidos da Esquina”
obj_vitorias: Array
0: 19611: 19752: 1982
vitorias
![Page 66: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/66.jpg)
Objetos JS
{ "nome": "Asdrubal", "livro": { "titulo": "Horacio o dino", "ano": 2010 } }
obj_autor
nome: “Asdrubal”
obj_livro
titulo: “Horacio o dino”ano: 2010
livro
![Page 67: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/67.jpg)
JavaScript
Objeto com Atributos (1)function exemploObjetoAtributos1() { var circulo = { centroX : 5, centroY : 3, raio : 10 }; alert("Circulo: centro(" + circulo.centroX + ", " + circulo.centroY + "), raio " + circulo.raio);}
![Page 68: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/68.jpg)
JavaScript
Objeto com Atributos (2)function exemploObjetoAtributos2() { var circulo = {}; circulo.centroX = 5; circulo.centroY = 3; circulo.raio = 10; alert("Circulo: centro(" + circulo.centroX + ", " + circulo.centroY + "), raio " + circulo.raio);}
![Page 69: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/69.jpg)
JavaScript
Objeto com Método (1)function exemploObjetoMetodo1() { var circulo = { centroX : 5, centroY : 3, raio : 10, area : function() { return 3.1416 * this.raio * this.raio; } }; alert("Circulo: centro(" + circulo.centroX + ", " + circulo.centroY + "), raio " + circulo.raio + ", area " + circulo.area());}
![Page 70: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/70.jpg)
JavaScript
Objeto com Método (2)function exemploObjetoMetodo3() { var circulo = {}; circulo.centroX = 5; circulo.centroY = 3; circulo.raio = 10; circulo.area = function() { return 3.1416 * this.raio * this.raio; } alert("Circulo: centro(" + circulo.centroX + ", " + circulo.centroY + "), raio " + circulo.raio + ", area " + circulo.area());}
![Page 71: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/71.jpg)
JSONJavaScript Object Notation
▪ Padrão aberto de intercâmbio de objetos
▪ Baseado na notação JavaScript
▪ Incorporado ao ECMAScript (Ecma, 2011)
▪ Adotado por diversas linguagens (http://json.org/)
![Page 72: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/72.jpg)
Stringify
▪ Serializandovar pessoa = { "nome": "Asdrubal", "idade": 25};var pessoaStr = JSON.stringify(pessoa);
▪ Desserializandovar pessoa2 = JSON.parse(pessoaStr);
![Page 73: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/73.jpg)
Classe
"Numa série ou num conjunto, grupo ou divisão que apresenta características ou atributos semelhantes." (Ferreira, 1989)
▪ Classificação de Carl Linné
![Page 74: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/74.jpg)
Classe
▪ Quando realizamos uma classificação de objetos, identificamos o seu comportamento e as características que eles possuem em comum.
▪ Classes definem:
▫ Atributos que irão descrever o objeto;
▫ Métodos que definem o comportamento dos mesmos.
![Page 75: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/75.jpg)
Objetos e Classes
▪ Os objetos são organizados/divididos em grupos chamados classes.
▪ Objetos da mesma classe têm:
▫ o mesmo conjunto de atributos (os valores dos atributos podem ser diferentes);
▫ o mesmo conjunto de métodos.
![Page 76: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/76.jpg)
Exemplo de ClasseEsfera
Atributos (nome, tipo)
(cor, color)
(elasticidade, string)
(raio, real)
(peso, real)
aumentar, diminuir, se mover
Comportamento
Classe Esfera
![Page 77: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/77.jpg)
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 78: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/78.jpg)
Exemplo de ClasseFinanciamento
Atributos (nome, tipo)
(percentual de juros, real)
(número de parcelas, inteiro)
(valor, real)
calcula parcela
Comportamento
Classe Financiamento
![Page 79: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/79.jpg)
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 80: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/80.jpg)
Classe
▪ Em Programação Orientada ao Objeto:
Atributos: dados que pertencem a cada instância da classe (objeto); são definidos sob a forma de variáveis.
Métodos: definem o comportamento do objeto; representados por módulos.
![Page 81: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/81.jpg)
Objeto instância de Classe
▪ Um Objeto consiste em uma instância de uma Classe
▪ A instância define:
▫ identidade única
▫ estado (representado pelos valores de seus atributos).
![Page 82: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/82.jpg)
Objeto
A classe pode ser importada de uma biblioteca ou definida pelo programador.
Para se instanciar um objeto utiliza-se o método Construtor.
![Page 83: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/83.jpg)
Construtores e Destrutores
▪ Construtor (mesmo nome da classe)
▫ Todo o objeto deve ser instanciado (criado) através da ativação do método construtor.
▪ Destrutor (finalize)
▫ O destrutor é o inverso do construtor, ele é ativado automaticamente quando o objeto está sendo destruído a fim de liberar a memória ocupada pelo mesmo.
▪ Garbage Collection (Coleta de Lixo)
▫ O mecanismo de gerência automática de memória que destrói o objeto quando ele não está mais sendo usado.
![Page 84: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/84.jpg)
Classe Circulo – C++
Atributosclass Circulo {public: int centroX, centroY; int raio;};
int main(){ Circulo circ; circ.centroX = 5; circ.centroY = 3; circ.raio = 10;
cout << "Circulo: centro( " << circ.centroX << ", " << circ.centroY << " ), raio " << circ.raio << endl;
return 0;}
![Page 85: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/85.jpg)
Objeto cout e operador <<
▪ cout▫ objeto da biblioteca C++ que representa a saída
padrão
▪ operador <<
▫ operador de inserção
▫ quando aplicado a uma stream, insere sequência na stream
![Page 86: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/86.jpg)
Objeto em Java
▪ A instanciação do objeto se dá através do comando new.
▪ Quando o objeto é instanciado é acionado um método especial denominado construtor que tem o mesmo nome da classe.
![Page 87: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/87.jpg)
Classe Circulo – Java
Atributospackage pt.c02oo.s02classe.s01circulo01;
public class Circulo { int centroX, centroY; int raio;}package pt.c02oo.s02classe.s01circulo01;
public class AppCirculo01 { public static void main(String args[]) { Circulo circ = new Circulo(); circ.centroX = 5; circ.centroY = 3; circ.raio = 10;
System.out.println("Circulo: centro(" + circ.centroX + ", " + circ.centroY + "), raio " + circ.raio);
}}
![Page 88: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/88.jpg)
Auto-referência e this
▪ Sem o this: Circulo(int pCentroX, int pCentroY, int pRaio) { centroX = pCentroX; centroY = pCentroY; raio = pRaio; }
▪ Com o this Circulo(int centroX, int centroY, int raio) { this.centroX = centroX; this.centroY = centroY; this.raio = raio; }
![Page 89: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/89.jpg)
Auto-referência e this
▪ Para realizar referência a si próprio o objeto pode usar a referência this
public class Circulo { int centroX, centroY; int raio; Circulo(int pCentroX, int pCentroY, int pRaio) { centroX = pCentroX; centroY = pCentroY; raio = pRaio; }
![Page 90: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/90.jpg)
Estudo de Caso
Bastião
Atributosidade (1 a 3 anos)
estado (acordado, dormindo)
Métodosaparecer, crescer, dormir e acordar
o*o*
o*o
*o*o*****
![Page 91: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/91.jpg)
Estudo de Caso
Classe Bastiao no arquivo Bastiao.java
Classe Principal no arquivo Principal.java
![Page 92: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/92.jpg)
Instanciação
Bastiao theBastian;
Declaração da Referência
theBastian = new Bastiao();
Instanciação do Objeto(chamada do construtor)
theBastian.aparece();
Chamada de Método
![Page 93: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/93.jpg)
Atributos Estáticos
▪ Recebem o prefixo static
▪ Atributos que pertencem à classe
▫ mesmo valor do atributo compartilhado por todos os objetos
![Page 94: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/94.jpg)
Métodos Estáticos
▪ Recebem o prefixo static
▪ Métodos de classe
▫ não exigem instância para serem acionados
▫ só podem acessar os atributos estáticos
▫ só podem acionar outros métodos estáticos
![Page 95: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/95.jpg)
Objetos da Biblioteca Java
![Page 96: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/96.jpg)
Vetor▪ Objeto especial do Java
▪ Declaração<tipo>[] <declaração
1>, ..., <declaração
n>;
<tipo> <declaração1>[], ..., <declaração
n>[];
▫ <declaração>◦ Sintaxe: <nome> = <inicialização>◦ Chaves são usadas para inicializar cada dimensão◦ Ex.: int primos[] = {1, 2, 3, 5, 7};
![Page 97: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/97.jpg)
Vetor▪ A inicialização inline instancia
automaticamente um objeto▪ Quando a inicialização não é inline o vetor ou
matriz precisa ser instanciado com new
<nome> = new <tipo>[<tamanho>]
▫ Ex.:int primos[];primos = new int[5];
![Page 98: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/98.jpg)
Estruturas de Dados DinâmicasVector e ArrayList
▪ vetores dinâmicos
▪ Vector – sincronizado
▫ mais seguro, mais lento
▪ ArrayList – não sincronizado
▫ menos seguro, mais rápido
▪ Métodos
▫ size()
▫ add(<elemento>)
▫ get(<posição>) <elemento>→
![Page 99: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/99.jpg)
Estruturas de Dados DinâmicasHashtable
▪ Tabela hash
▪ Métodos:
▫ put(<chave>, <valor>)
▫ get(<chave>) <valor>→
![Page 100: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/100.jpg)
Estruturas de Dados DinâmicasStack
▪ Pilha
▪ Métodos:
▫ push(<elemento>)
▫ pop() <elemento>→
![Page 101: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/101.jpg)
JavaScript e Protótipos
![Page 102: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/102.jpg)
JavaScript
Objeto com Método (1)function exemploObjetoMetodo1() { var circulo = { centroX : 5, centroY : 3, raio : 10, area : function() { return 3.1416 * this.raio * this.raio; } }; alert("Circulo: centro(" + circulo.centroX + ", " + circulo.centroY + "), raio " + circulo.raio + ", area " + circulo.area());}
![Page 103: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/103.jpg)
JavaScript
Objeto com Método (2)function exemploObjetoMetodo3() { var circulo = {}; circulo.centroX = 5; circulo.centroY = 3; circulo.raio = 10; circulo.area = function() { return 3.1416 * this.raio * this.raio; } alert("Circulo: centro(" + circulo.centroX + ", " + circulo.centroY + "), raio " + circulo.raio + ", area " + circulo.area());}
![Page 104: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/104.jpg)
JavaScript
Objeto com Método (2)function exemploObjetoMetodo3() { var circulo = {}; circulo.centroX = 5; circulo.centroY = 3; circulo.raio = 10; circulo.area = function() { return 3.1416 * this.raio * this.raio; } alert("Circulo: centro(" + circulo.centroX + ", " + circulo.centroY + "), raio " + circulo.raio + ", area " + circulo.area());}
![Page 105: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/105.jpg)
JavaScript
Protótipo (1)function Circulo01() {}
Circulo01.prototype.centroX = 5;Circulo01.prototype.centroY = 3;Circulo01.prototype.raio = 10; Circulo01.prototype.area = function() { return 3.1416 * this.raio * this.raio; };
function exemploPrototipo01() { var circulo = new Circulo01(); console.log("Circulo: centro(" + circulo.centroX + ", " + circulo.centroY + "), raio " + circulo.raio + ", area " + circulo.area());
console.log(Circulo01.prototype);}
![Page 106: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/106.jpg)
JavaScript
Protótipo (2)function Circulo02() {}
Circulo02.prototype = { centroX: 5, centroY: 3, raio: 10, area: function() { return 3.1416 * this.raio * this.raio; }};
function exemploPrototipo02() { var circulo = new Circulo02(); console.log("Circulo: centro(" + circulo.centroX + ", " + circulo.centroY + "), raio " + circulo.raio + ", area " + circulo.area());
console.log(Circulo01.prototype);}
![Page 107: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/107.jpg)
JavaScript
Protótipo (3)function Circulo03() { this.centroX = 5; this.centroY = 3; this.raio = 10; this.area = function() { return 3.1416 * this.raio * this.raio; }}
function exemploPrototipo03() { var circulo = new Circulo03(); console.log("Circulo: centro(" + circulo.centroX + ", " + circulo.centroY + "), raio " + circulo.raio + ", area " + circulo.area());
console.log(Circulo02.prototype);}
![Page 108: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/108.jpg)
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 109: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/109.jpg)
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 110: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/110.jpg)
Referências Bibliográficas
▪ Tenenbaum, Aaron M.; Langsam, Yedidyah; Augenstein, Moshe J. Data Structures Using C (1990) Prentice Hall, Upper Saddle River, NJ.
![Page 111: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/111.jpg)
André Santanchèhttp://www.ic.unicamp.br/~santanche
![Page 112: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/112.jpg)
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 113: Programação Orientada a Objetos Formalismos e ...santanch/teaching/oop/2015-1/...Estudo de Caso 1 Modularização Sucessiva Programa que calcula e apresenta o número de combinações](https://reader034.fdocumentos.tips/reader034/viewer/2022042606/5fb90c526c2be566f247eac1/html5/thumbnails/113.jpg)
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