SlideShare uma empresa Scribd logo
Aula 13 – Paradigmas de Programa¸c˜ao
e Orienta¸c˜ao a Objetos
Norton Trevisan Roman
7 de abril de 2020
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 1 / 28
Paradigma Imperativo
At´e agora trabalhamos com um modo de abordar
problemas:
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
Paradigma Imperativo
At´e agora trabalhamos com um modo de abordar
problemas:
Primeiro fa¸ca isso, depois aquilo
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
Paradigma Imperativo
At´e agora trabalhamos com um modo de abordar
problemas:
Primeiro fa¸ca isso, depois aquilo
Trabalhamos com comandos dados em uma ordem espec´ıfica
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
Paradigma Imperativo
At´e agora trabalhamos com um modo de abordar
problemas:
Primeiro fa¸ca isso, depois aquilo
Trabalhamos com comandos dados em uma ordem espec´ıfica
A abstra¸c˜ao natural ´e a subrotina
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
Paradigma Imperativo
At´e agora trabalhamos com um modo de abordar
problemas:
Primeiro fa¸ca isso, depois aquilo
Trabalhamos com comandos dados em uma ordem espec´ıfica
A abstra¸c˜ao natural ´e a subrotina
Similar a rotinas do dia-a-dia: receitas, instru¸c˜oes para se
fazer algo
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
Paradigma Imperativo
At´e agora trabalhamos com um modo de abordar
problemas:
Primeiro fa¸ca isso, depois aquilo
Trabalhamos com comandos dados em uma ordem espec´ıfica
A abstra¸c˜ao natural ´e a subrotina
Similar a rotinas do dia-a-dia: receitas, instru¸c˜oes para se
fazer algo
Dados podem estar separados das subrotinas
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
Paradigma Imperativo
At´e agora trabalhamos com um modo de abordar
problemas:
Primeiro fa¸ca isso, depois aquilo
Trabalhamos com comandos dados em uma ordem espec´ıfica
A abstra¸c˜ao natural ´e a subrotina
Similar a rotinas do dia-a-dia: receitas, instru¸c˜oes para se
fazer algo
Dados podem estar separados das subrotinas
Agrupados conforme o dom´ınio ou necessidade
computacional
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
Paradigma Imperativo
Esse ´e o paradigma imperativo
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 3 / 28
Paradigma Imperativo
Esse ´e o paradigma imperativo
Tamb´em conhecido como procedimental (ou procedural)
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 3 / 28
Paradigma Imperativo
Esse ´e o paradigma imperativo
Tamb´em conhecido como procedimental (ou procedural)
Vˆe o problema como um conjunto de passos a serem
resolvidos da forma “Primeiro fa¸ca isso, depois aquilo”
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 3 / 28
Paradigma Imperativo
Esse ´e o paradigma imperativo
Tamb´em conhecido como procedimental (ou procedural)
Vˆe o problema como um conjunto de passos a serem
resolvidos da forma “Primeiro fa¸ca isso, depois aquilo”
Baseado totalmente na m´aquina de Von Neumann
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 3 / 28
Paradigma Imperativo
Esse ´e o paradigma imperativo
Tamb´em conhecido como procedimental (ou procedural)
Vˆe o problema como um conjunto de passos a serem
resolvidos da forma “Primeiro fa¸ca isso, depois aquilo”
Baseado totalmente na m´aquina de Von Neumann
Ex: C, Pascal.
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 3 / 28
Paradigma Imperativo
Esse ´e o paradigma imperativo
Tamb´em conhecido como procedimental (ou procedural)
Vˆe o problema como um conjunto de passos a serem
resolvidos da forma “Primeiro fa¸ca isso, depois aquilo”
Baseado totalmente na m´aquina de Von Neumann
Ex: C, Pascal.
int c = a + 2;
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 3 / 28
Paradigma Funcional
Avalie uma express˜ao e use o valor resultante para
algo
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
Paradigma Funcional
Avalie uma express˜ao e use o valor resultante para
algo
A abstra¸c˜ao natural ´e a fun¸c˜ao
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
Paradigma Funcional
Avalie uma express˜ao e use o valor resultante para
algo
A abstra¸c˜ao natural ´e a fun¸c˜ao
Abstrai uma express˜ao simples como uma fun¸c˜ao que pode
ser avaliada como uma express˜ao
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
Paradigma Funcional
Avalie uma express˜ao e use o valor resultante para
algo
A abstra¸c˜ao natural ´e a fun¸c˜ao
Abstrai uma express˜ao simples como uma fun¸c˜ao que pode
ser avaliada como uma express˜ao
Todos os c´alculos s˜ao feitos pela aplica¸c˜ao de fun¸c˜oes
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
Paradigma Funcional
Avalie uma express˜ao e use o valor resultante para
algo
A abstra¸c˜ao natural ´e a fun¸c˜ao
Abstrai uma express˜ao simples como uma fun¸c˜ao que pode
ser avaliada como uma express˜ao
Todos os c´alculos s˜ao feitos pela aplica¸c˜ao de fun¸c˜oes
N˜ao h´a vari´aveis globais, apenas parˆametros e vari´aveis locais
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
Paradigma Funcional
Avalie uma express˜ao e use o valor resultante para
algo
A abstra¸c˜ao natural ´e a fun¸c˜ao
Abstrai uma express˜ao simples como uma fun¸c˜ao que pode
ser avaliada como uma express˜ao
Todos os c´alculos s˜ao feitos pela aplica¸c˜ao de fun¸c˜oes
N˜ao h´a vari´aveis globais, apenas parˆametros e vari´aveis locais
Baseado na matem´atica e na teoria das fun¸c˜oes
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
Paradigma Funcional
Avalie uma express˜ao e use o valor resultante para
algo
A abstra¸c˜ao natural ´e a fun¸c˜ao
Abstrai uma express˜ao simples como uma fun¸c˜ao que pode
ser avaliada como uma express˜ao
Todos os c´alculos s˜ao feitos pela aplica¸c˜ao de fun¸c˜oes
N˜ao h´a vari´aveis globais, apenas parˆametros e vari´aveis locais
Baseado na matem´atica e na teoria das fun¸c˜oes
Ex: Lisp (LISt Processing), Scheme
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
Paradigma Funcional
Avalie uma express˜ao e use o valor resultante para
algo
A abstra¸c˜ao natural ´e a fun¸c˜ao
Abstrai uma express˜ao simples como uma fun¸c˜ao que pode
ser avaliada como uma express˜ao
Todos os c´alculos s˜ao feitos pela aplica¸c˜ao de fun¸c˜oes
N˜ao h´a vari´aveis globais, apenas parˆametros e vari´aveis locais
Baseado na matem´atica e na teoria das fun¸c˜oes
Ex: Lisp (LISt Processing), Scheme
(let ((a 3) (c (+ a 2))))
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
Paradigma L´ogico
Responda uma pergunta atrav´es da busca pela
solu¸c˜ao
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
Paradigma L´ogico
Responda uma pergunta atrav´es da busca pela
solu¸c˜ao
Baseado em axiomas, regras de inferˆencias e buscas
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
Paradigma L´ogico
Responda uma pergunta atrav´es da busca pela
solu¸c˜ao
Baseado em axiomas, regras de inferˆencias e buscas
Muito usado em dom´ınios que lidam com a extra¸c˜ao
de conhecimento a partir de fatos e rela¸c˜oes entre
eles
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
Paradigma L´ogico
Responda uma pergunta atrav´es da busca pela
solu¸c˜ao
Baseado em axiomas, regras de inferˆencias e buscas
Muito usado em dom´ınios que lidam com a extra¸c˜ao
de conhecimento a partir de fatos e rela¸c˜oes entre
eles
A execu¸c˜ao do problema torna-se uma busca sistem´atica em
um conjunto de fatos
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
Paradigma L´ogico
Responda uma pergunta atrav´es da busca pela
solu¸c˜ao
Baseado em axiomas, regras de inferˆencias e buscas
Muito usado em dom´ınios que lidam com a extra¸c˜ao
de conhecimento a partir de fatos e rela¸c˜oes entre
eles
A execu¸c˜ao do problema torna-se uma busca sistem´atica em
um conjunto de fatos
Usa, para isso, um conjunto de regras de inferˆencia
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
Paradigma L´ogico
Responda uma pergunta atrav´es da busca pela
solu¸c˜ao
Baseado em axiomas, regras de inferˆencias e buscas
Muito usado em dom´ınios que lidam com a extra¸c˜ao
de conhecimento a partir de fatos e rela¸c˜oes entre
eles
A execu¸c˜ao do problema torna-se uma busca sistem´atica em
um conjunto de fatos
Usa, para isso, um conjunto de regras de inferˆencia
Ex: Prolog, Mercury
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
Paradigma L´ogico
Responda uma pergunta atrav´es da busca pela
solu¸c˜ao
Baseado em axiomas, regras de inferˆencias e buscas
Muito usado em dom´ınios que lidam com a extra¸c˜ao
de conhecimento a partir de fatos e rela¸c˜oes entre
eles
A execu¸c˜ao do problema torna-se uma busca sistem´atica em
um conjunto de fatos
Usa, para isso, um conjunto de regras de inferˆencia
Ex: Prolog, Mercury
C is A + 2.
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
Paradigma Orientado a Objetos
Baseia-se no agrupamento de aspectos do
programa, separando-os do resto
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
Paradigma Orientado a Objetos
Baseia-se no agrupamento de aspectos do
programa, separando-os do resto
Conforme conceitos importantes para o dom´ınio de interesse
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
Paradigma Orientado a Objetos
Baseia-se no agrupamento de aspectos do
programa, separando-os do resto
Conforme conceitos importantes para o dom´ınio de interesse
Tecnicalidades da programa¸c˜ao ficam em segundo plano
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
Paradigma Orientado a Objetos
Baseia-se no agrupamento de aspectos do
programa, separando-os do resto
Conforme conceitos importantes para o dom´ınio de interesse
Tecnicalidades da programa¸c˜ao ficam em segundo plano
Muito importante quando os programas ficam grandes
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
Paradigma Orientado a Objetos
Baseia-se no agrupamento de aspectos do
programa, separando-os do resto
Conforme conceitos importantes para o dom´ınio de interesse
Tecnicalidades da programa¸c˜ao ficam em segundo plano
Muito importante quando os programas ficam grandes
Opera¸c˜oes e dados s˜ao encapsulados em classes
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
Paradigma Orientado a Objetos
Baseia-se no agrupamento de aspectos do
programa, separando-os do resto
Conforme conceitos importantes para o dom´ınio de interesse
Tecnicalidades da programa¸c˜ao ficam em segundo plano
Muito importante quando os programas ficam grandes
Opera¸c˜oes e dados s˜ao encapsulados em classes
Esconde informa¸c˜ao para proteger propriedades internas da
classe
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
Paradigma Orientado a Objetos
Baseia-se no agrupamento de aspectos do
programa, separando-os do resto
Conforme conceitos importantes para o dom´ınio de interesse
Tecnicalidades da programa¸c˜ao ficam em segundo plano
Muito importante quando os programas ficam grandes
Opera¸c˜oes e dados s˜ao encapsulados em classes
Esconde informa¸c˜ao para proteger propriedades internas da
classe
Classes s˜ao organizadas hierarquicamente, por meio
de heran¸ca
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
Paradigma Orientado a Objetos
Baseia-se no agrupamento de aspectos do
programa, separando-os do resto
Conforme conceitos importantes para o dom´ınio de interesse
Tecnicalidades da programa¸c˜ao ficam em segundo plano
Muito importante quando os programas ficam grandes
Opera¸c˜oes e dados s˜ao encapsulados em classes
Esconde informa¸c˜ao para proteger propriedades internas da
classe
Classes s˜ao organizadas hierarquicamente, por meio
de heran¸ca
Permite a extens˜ao ou especializa¸c˜ao de classes
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
Paradigma Orientado a Objetos
Java, C++
(compat´ıveis com
imperativo)
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
Paradigma Orientado a Objetos
Java, C++
(compat´ıveis com
imperativo)
int c = a + 2;
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
Paradigma Orientado a Objetos
Java, C++
(compat´ıveis com
imperativo)
int c = a + 2;
Integer c = new
Integer(a.intValue() + 2);
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
Paradigma Orientado a Objetos
Java, C++
(compat´ıveis com
imperativo)
int c = a + 2;
Integer c = new
Integer(a.intValue() + 2);
Ruby, Smalltalk
(orienta¸c˜ao a objetos
“pura” – tudo ´e objeto,
inclusive literais)
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
Paradigma Orientado a Objetos
Java, C++
(compat´ıveis com
imperativo)
int c = a + 2;
Integer c = new
Integer(a.intValue() + 2);
Ruby, Smalltalk
(orienta¸c˜ao a objetos
“pura” – tudo ´e objeto,
inclusive literais)
c = a + 2
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
Paradigma Orientado a Objetos
Java, C++
(compat´ıveis com
imperativo)
int c = a + 2;
Integer c = new
Integer(a.intValue() + 2);
Ruby, Smalltalk
(orienta¸c˜ao a objetos
“pura” – tudo ´e objeto,
inclusive literais)
c = a + 2
c = a.+(2)
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
Paradigma Orientado a Objetos
Java, C++
(compat´ıveis com
imperativo)
int c = a + 2;
Integer c = new
Integer(a.intValue() + 2);
Ruby, Smalltalk
(orienta¸c˜ao a objetos
“pura” – tudo ´e objeto,
inclusive literais)
c = a + 2
c = a.+(2)
c = 2.+(a)
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
Classes e Objetos
Classes:
Agrupamento de entidades que possuem alguns
atributos e m´etodos em comum
Representam o modelo por tr´as do problema – a
ideia
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 8 / 28
Classes e Objetos
Classes:
Agrupamento de entidades que possuem alguns
atributos e m´etodos em comum
Representam o modelo por tr´as do problema – a
ideia
Objetos:
Representantes das classes
Constituem as entidades computacionais que
representam as classes
S˜ao a implementa¸c˜ao f´ısica da classe
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 8 / 28
Encapsulamento e Subclasses
Encapsulamento
Ato de agrupar entidades que contenham atributos
e m´etodos em comum
Atributos e m´etodos locais a um grupo de entidades ficam
assim escondidos do resto do problema
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 9 / 28
Encapsulamento e Subclasses
Encapsulamento
Ato de agrupar entidades que contenham atributos
e m´etodos em comum
Atributos e m´etodos locais a um grupo de entidades ficam
assim escondidos do resto do problema
Subclasses
S˜ao sub-agrupamentos de entidades distintas, mas
que possuem alguns atributos em comum
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 9 / 28
Heran¸ca
Quando criamos uma subclasse, o que acontece
com os atributos e m´etodos da superclasse?
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
Heran¸ca
Quando criamos uma subclasse, o que acontece
com os atributos e m´etodos da superclasse?
S˜ao “herdados” pela subclasse
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
Heran¸ca
Quando criamos uma subclasse, o que acontece
com os atributos e m´etodos da superclasse?
S˜ao “herdados” pela subclasse
Nem todos... mais tarde veremos
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
Heran¸ca
Quando criamos uma subclasse, o que acontece
com os atributos e m´etodos da superclasse?
S˜ao “herdados” pela subclasse
Nem todos... mais tarde veremos
Como se a subclasse possuisse tamb´em aqueles atributos e
m´etodos
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
Heran¸ca
Quando criamos uma subclasse, o que acontece
com os atributos e m´etodos da superclasse?
S˜ao “herdados” pela subclasse
Nem todos... mais tarde veremos
Como se a subclasse possuisse tamb´em aqueles atributos e
m´etodos
N˜ao h´a a necessidade de repetir c´odigo
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
Heran¸ca
Quando criamos uma subclasse, o que acontece
com os atributos e m´etodos da superclasse?
S˜ao “herdados” pela subclasse
Nem todos... mais tarde veremos
Como se a subclasse possuisse tamb´em aqueles atributos e
m´etodos
N˜ao h´a a necessidade de repetir c´odigo
Como separamos o problema em classes e
subclasses?
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
Heran¸ca
Quando criamos uma subclasse, o que acontece
com os atributos e m´etodos da superclasse?
S˜ao “herdados” pela subclasse
Nem todos... mais tarde veremos
Como se a subclasse possuisse tamb´em aqueles atributos e
m´etodos
N˜ao h´a a necessidade de repetir c´odigo
Como separamos o problema em classes e
subclasses?
Depender´a das caracter´ısticas do problema e da sua
interpreta¸c˜ao dele
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
Pondo os P´es no Ch˜ao
Voltando `a casa...
/* valor do metro quadrado da casa */
static double valorM2 = 1500;
/* materiais da piscina */
static final int ALVENARIA = 0;
static final int VINIL = 1;
static final int FIBRA = 2;
static final int PLASTICO = 3;
/* pre¸cos dos materiais */
static double[] precos = {1500, 1100, 750, 500};
/* nomes dos materiais */
static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’,
’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’},
{’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,
’c’,’o’}};
/* Calcula a ´area da casa */
static void areaCasa(float lateral, float cquarto)
/* Calcula a ´area da piscina */
static double areaPiscina(double raio) ...
/* Calcula o valor da constru¸c~ao da piscina */
static double valorPiscina(double area,
int material)
/* Calcula o valor total da constru¸c~ao */
static double valorCasa(double area)
/* Carrega os valores das piscinas na matriz de
´area X material */
public static void carregaVal(double[][] m)
/* Retorna matriz com os pre¸cos finais. */
public static double[][] calculaFinal(
double[][] val,
double[][] desc)
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 11 / 28
Pondo os P´es no Ch˜ao
Voltando `a casa...
/* valor do metro quadrado da casa */
static double valorM2 = 1500;
/* materiais da piscina */
static final int ALVENARIA = 0;
static final int VINIL = 1;
static final int FIBRA = 2;
static final int PLASTICO = 3;
/* pre¸cos dos materiais */
static double[] precos = {1500, 1100, 750, 500};
/* nomes dos materiais */
static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’,
’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’},
{’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,
’c’,’o’}};
/* Calcula a ´area da casa */
static void areaCasa(float lateral, float cquarto)
/* Calcula a ´area da piscina */
static double areaPiscina(double raio) ...
/* Calcula o valor da constru¸c~ao da piscina */
static double valorPiscina(double area,
int material)
/* Calcula o valor total da constru¸c~ao */
static double valorCasa(double area)
/* Carrega os valores das piscinas na matriz de
´area X material */
public static void carregaVal(double[][] m)
/* Retorna matriz com os pre¸cos finais. */
public static double[][] calculaFinal(
double[][] val,
double[][] desc)
Existiria uma divis˜ao natural aqui?
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 11 / 28
Pondo os P´es no Ch˜ao
Voltando `a casa...
/* valor do metro quadrado da casa */
static double valorM2 = 1500;
/* materiais da piscina */
static final int ALVENARIA = 0;
static final int VINIL = 1;
static final int FIBRA = 2;
static final int PLASTICO = 3;
/* pre¸cos dos materiais */
static double[] precos = {1500, 1100, 750, 500};
/* nomes dos materiais */
static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’,
’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’},
{’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,
’c’,’o’}};
/* Calcula a ´area da casa */
static void areaCasa(float lateral, float cquarto)
/* Calcula a ´area da piscina */
static double areaPiscina(double raio) ...
/* Calcula o valor da constru¸c~ao da piscina */
static double valorPiscina(double area,
int material)
/* Calcula o valor total da constru¸c~ao */
static double valorCasa(double area)
/* Carrega os valores das piscinas na matriz de
´area X material */
public static void carregaVal(double[][] m)
/* Retorna matriz com os pre¸cos finais. */
public static double[][] calculaFinal(
double[][] val,
double[][] desc)
Existiria uma divis˜ao natural aqui? M´etodos e
atributos relativos `a casa...
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 11 / 28
Pondo os P´es no Ch˜ao
Voltando `a casa...
/* valor do metro quadrado da casa */
static double valorM2 = 1500;
/* materiais da piscina */
static final int ALVENARIA = 0;
static final int VINIL = 1;
static final int FIBRA = 2;
static final int PLASTICO = 3;
/* pre¸cos dos materiais */
static double[] precos = {1500, 1100, 750, 500};
/* nomes dos materiais */
static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’,
’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’},
{’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,
’c’,’o’}};
/* Calcula a ´area da casa */
static void areaCasa(float lateral, float cquarto)
/* Calcula a ´area da piscina */
static double areaPiscina(double raio) ...
/* Calcula o valor da constru¸c~ao da piscina */
static double valorPiscina(double area,
int material)
/* Calcula o valor total da constru¸c~ao */
static double valorCasa(double area)
/* Carrega os valores das piscinas na matriz de
´area X material */
public static void carregaVal(double[][] m)
/* Retorna matriz com os pre¸cos finais. */
public static double[][] calculaFinal(
double[][] val,
double[][] desc)
Existiria uma divis˜ao natural aqui? M´etodos e
atributos relativos `a casa... E os relativos `a piscina
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 11 / 28
Ent˜ao...
Casa Piscina
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
Ent˜ao...
Casa
Valor do metro
quadrado
Piscina
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
Ent˜ao...
Casa
Valor do metro
quadrado
Piscina
Tipos de materiais
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
Ent˜ao...
Casa
Valor do metro
quadrado
Piscina
Tipos de materiais
Pre¸cos do m2
dos
materiais
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
Ent˜ao...
Casa
Valor do metro
quadrado
Piscina
Tipos de materiais
Pre¸cos do m2
dos
materiais
Nomes dos materiais
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
Ent˜ao...
Casa
Valor do metro
quadrado
M´etodos:
Piscina
Tipos de materiais
Pre¸cos do m2
dos
materiais
Nomes dos materiais
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
Ent˜ao...
Casa
Valor do metro
quadrado
M´etodos:
C´alculo da ´area
Piscina
Tipos de materiais
Pre¸cos do m2
dos
materiais
Nomes dos materiais
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
Ent˜ao...
Casa
Valor do metro
quadrado
M´etodos:
C´alculo da ´area
Piscina
Tipos de materiais
Pre¸cos do m2
dos
materiais
Nomes dos materiais
M´etodos:
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
Ent˜ao...
Casa
Valor do metro
quadrado
M´etodos:
C´alculo da ´area
Piscina
Tipos de materiais
Pre¸cos do m2
dos
materiais
Nomes dos materiais
M´etodos:
C´alculo da ´area
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
Ent˜ao...
Casa
Valor do metro
quadrado
M´etodos:
C´alculo da ´area
C´alculo do valor total
Piscina
Tipos de materiais
Pre¸cos do m2
dos
materiais
Nomes dos materiais
M´etodos:
C´alculo da ´area
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
Ent˜ao...
Casa
Valor do metro
quadrado
M´etodos:
C´alculo da ´area
C´alculo do valor total
Piscina
Tipos de materiais
Pre¸cos do m2
dos
materiais
Nomes dos materiais
M´etodos:
C´alculo da ´area
C´alculo do valor total, e
m´etodos auxiliares
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
Ent˜ao...
Podemos simplesmente criar duas classes para
acomodar essas diferen¸cas
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 13 / 28
Ent˜ao...
Podemos simplesmente criar duas classes para
acomodar essas diferen¸cas
E como ficaria o c´alculo envolvendo casa e piscina?
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 13 / 28
Ent˜ao...
Podemos simplesmente criar duas classes para
acomodar essas diferen¸cas
E como ficaria o c´alculo envolvendo casa e piscina?
Poderia ficar a cargo de uma terceira classe
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 13 / 28
Ent˜ao...
Podemos simplesmente criar duas classes para
acomodar essas diferen¸cas
E como ficaria o c´alculo envolvendo casa e piscina?
Poderia ficar a cargo de uma terceira classe
Ou poderia ficar dentro de Casa
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 13 / 28
Ent˜ao...
Podemos simplesmente criar duas classes para
acomodar essas diferen¸cas
E como ficaria o c´alculo envolvendo casa e piscina?
Poderia ficar a cargo de uma terceira classe
Ou poderia ficar dentro de Casa
Nesse caso, cada casa teria um representante da classe
Piscina dentro dela
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 13 / 28
Classes em Java
Como criamos uma
classe em java?
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 14 / 28
Classes em Java
Como criamos uma
classe em java?
class Nome_da_classe {
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 14 / 28
Classes em Java
Como criamos uma
classe em java?
class Nome_da_classe {
}
Como v´ınhamos fazendo – o programa nada mais era que
uma classe
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 14 / 28
Classes em Java
Como criamos uma
classe em java?
class Nome_da_classe {
}
Como v´ınhamos fazendo – o programa nada mais era que
uma classe
Como tal, deveria agrupar coisas que julgamos ser
semelhantes
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 14 / 28
Classes em Java
Como criamos uma
classe em java?
class Nome_da_classe {
}
Como v´ınhamos fazendo – o programa nada mais era que
uma classe
Como tal, deveria agrupar coisas que julgamos ser
semelhantes
Por conven¸c˜ao, o nome de uma classe inicia em
mai´uscula
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 14 / 28
Classes em Java
Componentes da classe:
class Nome_da_classe {
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 15 / 28
Classes em Java
Componentes da classe:
Atributos (ou campos) class Nome_da_classe {
static int x = 2;
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 15 / 28
Classes em Java
Componentes da classe:
Atributos (ou campos)
M´etodos
class Nome_da_classe {
static int x = 2;
static void faz(int y) {
System.out.println(y);
}
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 15 / 28
Classes em Java
Componentes da classe:
Atributos (ou campos)
M´etodos
Todos tˆem que ser
static?
class Nome_da_classe {
static int x = 2;
static void faz(int y) {
System.out.println(y);
}
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 15 / 28
Classes em Java
Componentes da classe:
Atributos (ou campos)
M´etodos
Todos tˆem que ser
static?
N˜ao. Veremos mais
adiante...
class Nome_da_classe {
static int x = 2;
static void faz(int y) {
System.out.println(y);
}
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 15 / 28
Classes em Java
Voltando `a casa...
/* valor do metro quadrado da casa */
static double valorM2 = 1500;
/* materiais da piscina */
static final int ALVENARIA = 0;
static final int VINIL = 1;
static final int FIBRA = 2;
static final int PLASTICO = 3;
/* pre¸cos dos materiais */
static double[] precos = {1500, 1100, 750, 500};
/* nomes dos materiais */
static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’,
’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’},
{’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,
’c’,’o’}};
/* Calcula a ´area da casa */
static void areaCasa(float lateral, float cquarto)
/* Calcula a ´area da piscina */
static double areaPiscina(double raio) ...
/* Calcula o valor da constru¸c~ao da piscina */
static double valorPiscina(double area,
int material)
/* Calcula o valor total da constru¸c~ao */
static double valorCasa(double area)
/* Carrega os valores das piscinas na matriz de
´area X material */
public static void carregaVal(double[][] m)
/* Retorna matriz com os pre¸cos finais. */
public static double[][] calculaFinal(
double[][] val,
double[][] desc)
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 16 / 28
Classes em Java
Voltando `a casa... vamos reagrupar . . .
/* valor do metro quadrado da casa */
static double valorM2 = 1500;
/* materiais da piscina */
static final int ALVENARIA = 0;
static final int VINIL = 1;
static final int FIBRA = 2;
static final int PLASTICO = 3;
/* pre¸cos dos materiais */
static double[] precos = {1500, 1100, 750, 500};
/* nomes dos materiais */
static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’,
’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’},
{’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,
’c’,’o’}};
/* Calcula a ´area da casa */
static void areaCasa(float lateral, float cquarto)
/* Calcula a ´area da piscina */
static double areaPiscina(double raio) ...
/* Calcula o valor da constru¸c~ao da piscina */
static double valorPiscina(double area,
int material)
/* Calcula o valor total da constru¸c~ao */
static double valorCasa(double area)
/* Carrega os valores das piscinas na matriz de
´area X material */
public static void carregaVal(double[][] m)
/* Retorna matriz com os pre¸cos finais. */
public static double[][] calculaFinal(
double[][] val,
double[][] desc)
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 16 / 28
Classes em Java
Voltando `a casa... vamos reagrupar . . .
/* valor do metro quadrado da casa */
static double valorM2 = 1500;
/* materiais da piscina */
static final int ALVENARIA = 0;
static final int VINIL = 1;
static final int FIBRA = 2;
static final int PLASTICO = 3;
/* pre¸cos dos materiais */
static double[] precos = {1500, 1100, 750, 500};
/* nomes dos materiais */
static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’,
’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’},
{’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,
’c’,’o’}};
/* Calcula a ´area da casa */
static void areaCasa(float lateral, float cquarto)
/* Calcula a ´area da piscina */
static double areaPiscina(double raio) ...
/* Calcula o valor da constru¸c~ao da piscina */
static double valorPiscina(double area,
int material)
/* Calcula o valor total da constru¸c~ao */
static double valorCasa(double area)
/* Carrega os valores das piscinas na matriz de
´area X material */
public static void carregaVal(double[][] m)
/* Retorna matriz com os pre¸cos finais. */
public static double[][] calculaFinal(
double[][] val,
double[][] desc)
Atributos e m´etodos relativos `a ´area da casa
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 16 / 28
Classes em Java
Voltando `a casa... vamos reagrupar . . .
/* valor do metro quadrado da casa */
static double valorM2 = 1500;
/* materiais da piscina */
static final int ALVENARIA = 0;
static final int VINIL = 1;
static final int FIBRA = 2;
static final int PLASTICO = 3;
/* pre¸cos dos materiais */
static double[] precos = {1500, 1100, 750, 500};
/* nomes dos materiais */
static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’,
’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’},
{’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,
’c’,’o’}};
/* Calcula a ´area da casa */
static void areaCasa(float lateral, float cquarto)
/* Calcula a ´area da piscina */
static double areaPiscina(double raio) ...
/* Calcula o valor da constru¸c~ao da piscina */
static double valorPiscina(double area,
int material)
/* Calcula o valor total da constru¸c~ao */
static double valorCasa(double area)
/* Carrega os valores das piscinas na matriz de
´area X material */
public static void carregaVal(double[][] m)
/* Retorna matriz com os pre¸cos finais. */
public static double[][] calculaFinal(
double[][] val,
double[][] desc)
Atributos e m´etodos relativos `a ´area da casa
Atributos e m´etodos relativos `a ´area da piscina
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 16 / 28
Classes em Java
M´etodos relativos `a ´area da casa
/* Programa para calcular a ´area de uma casa
(e seus c^omodos) de 3 c^omodos: uma sala de
10X10m, um banheiro e um quarto de 5X7m cada.*/
class AreaCasa {
/* valor do metro quadrado da casa */
static double valorM2 = 1500;
/* Calcula a ´area da casa */
static void area(float lateral, float cquarto) {
float areaq; // ´area do quarto
float areas; // ´area da sala
float areat; // ´area total
if (lateral>=0 && cquarto>=0) {
System.out.println("C´alculo da ´area da casa");
areas = lateral*lateral;
System.out.println("A ´area da sala ´e "+areas);
areaq = cquarto*(lateral/2);
System.out.println("A ´area do banheiro ´e "+areaq);
System.out.println("A ´area do quarto ´e "+areaq);
areat = areas + 2*areaq;
System.out.println("A ´area total ´e " + areat);
}
else
System.out.println("Erro: par^ametro < 0");
}
/* Calcula o valor total da casa */
static double valor(double area) {
if (area >= 0) return(valorM2*area);
return(-1);
}
public static void main(String[] args) {
}
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 17 / 28
Classes em Java
M´etodos relativos `a ´area da casa
/* Programa para calcular a ´area de uma casa
(e seus c^omodos) de 3 c^omodos: uma sala de
10X10m, um banheiro e um quarto de 5X7m cada.*/
class AreaCasa {
/* valor do metro quadrado da casa */
static double valorM2 = 1500;
/* Calcula a ´area da casa */
static void area(float lateral, float cquarto) {
float areaq; // ´area do quarto
float areas; // ´area da sala
float areat; // ´area total
if (lateral>=0 && cquarto>=0) {
System.out.println("C´alculo da ´area da casa");
areas = lateral*lateral;
System.out.println("A ´area da sala ´e "+areas);
areaq = cquarto*(lateral/2);
System.out.println("A ´area do banheiro ´e "+areaq);
System.out.println("A ´area do quarto ´e "+areaq);
areat = areas + 2*areaq;
System.out.println("A ´area total ´e " + areat);
}
else
System.out.println("Erro: par^ametro < 0");
}
/* Calcula o valor total da casa */
static double valor(double area) {
if (area >= 0) return(valorM2*area);
return(-1);
}
public static void main(String[] args) {
}
}
Arquivo:
AreaCasa.java
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 17 / 28
Classes em Java
M´etodos relativos `a ´area da casa
/* Programa para calcular a ´area de uma casa
(e seus c^omodos) de 3 c^omodos: uma sala de
10X10m, um banheiro e um quarto de 5X7m cada.*/
class AreaCasa {
/* valor do metro quadrado da casa */
static double valorM2 = 1500;
/* Calcula a ´area da casa */
static void area(float lateral, float cquarto) {
float areaq; // ´area do quarto
float areas; // ´area da sala
float areat; // ´area total
if (lateral>=0 && cquarto>=0) {
System.out.println("C´alculo da ´area da casa");
areas = lateral*lateral;
System.out.println("A ´area da sala ´e "+areas);
areaq = cquarto*(lateral/2);
System.out.println("A ´area do banheiro ´e "+areaq);
System.out.println("A ´area do quarto ´e "+areaq);
areat = areas + 2*areaq;
System.out.println("A ´area total ´e " + areat);
}
else
System.out.println("Erro: par^ametro < 0");
}
/* Calcula o valor total da casa */
static double valor(double area) {
if (area >= 0) return(valorM2*area);
return(-1);
}
public static void main(String[] args) {
}
}
Arquivo:
AreaCasa.java
Ela possui seu pr´oprio
main
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 17 / 28
Classes em Java
M´etodos relativos `a ´area da piscina
class AreaPiscina {
static final int ALVENARIA = 0;
static final int VINIL = 1;
static final int FIBRA = 2;
static final int PLASTICO = 3;
static double[] precos = {1500, 1100, 750, 500};
static char[][] nomes =
{{’A’,’l’,’v’,’e’,’n’,’a’,’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,’c’,’o’}};
static double area(double raio) {
return((raio >= 0) ? Math.PI * Math.pow(raio,2) : -1);
}
static double valor(double area, int material) {
if (material<ALVENARIA || material>PLASTICO || area<0)
return(-1);
return(area*precos[material]);
}
public static void carregaVal(double[][] m) {
for (int i=0; i<m.length; i++) {
for (int j=50; j<=200; j+=50) {
m[i][j / 50 - 1] = precos[i] * j;
}
}
}
public static double[][] calculaFinal(
double[][] val,double[][] desc) {
double[][] saida = new double[val.length]
[val[0].length];
for (int i=0; i<saida.length; i++) {
for (int j=0; j<saida[0].length; j++)
saida[i][j] = val[i][j] * (1-desc[i][j]);
}
return(saida);
}
public static void main(String[] args) {
}
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 18 / 28
Classes em Java
M´etodos relativos `a ´area da piscina
class AreaPiscina {
static final int ALVENARIA = 0;
static final int VINIL = 1;
static final int FIBRA = 2;
static final int PLASTICO = 3;
static double[] precos = {1500, 1100, 750, 500};
static char[][] nomes =
{{’A’,’l’,’v’,’e’,’n’,’a’,’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,’c’,’o’}};
static double area(double raio) {
return((raio >= 0) ? Math.PI * Math.pow(raio,2) : -1);
}
static double valor(double area, int material) {
if (material<ALVENARIA || material>PLASTICO || area<0)
return(-1);
return(area*precos[material]);
}
public static void carregaVal(double[][] m) {
for (int i=0; i<m.length; i++) {
for (int j=50; j<=200; j+=50) {
m[i][j / 50 - 1] = precos[i] * j;
}
}
}
public static double[][] calculaFinal(
double[][] val,double[][] desc) {
double[][] saida = new double[val.length]
[val[0].length];
for (int i=0; i<saida.length; i++) {
for (int j=0; j<saida[0].length; j++)
saida[i][j] = val[i][j] * (1-desc[i][j]);
}
return(saida);
}
public static void main(String[] args) {
}
}
AreaPiscina.java
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 18 / 28
Classes em Java
M´etodos relativos `a ´area da piscina
class AreaPiscina {
static final int ALVENARIA = 0;
static final int VINIL = 1;
static final int FIBRA = 2;
static final int PLASTICO = 3;
static double[] precos = {1500, 1100, 750, 500};
static char[][] nomes =
{{’A’,’l’,’v’,’e’,’n’,’a’,’r’,’i’,’a’},
{’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’},
{’P’,’l’,’´a’,’s’,’t’,’i’,’c’,’o’}};
static double area(double raio) {
return((raio >= 0) ? Math.PI * Math.pow(raio,2) : -1);
}
static double valor(double area, int material) {
if (material<ALVENARIA || material>PLASTICO || area<0)
return(-1);
return(area*precos[material]);
}
public static void carregaVal(double[][] m) {
for (int i=0; i<m.length; i++) {
for (int j=50; j<=200; j+=50) {
m[i][j / 50 - 1] = precos[i] * j;
}
}
}
public static double[][] calculaFinal(
double[][] val,double[][] desc) {
double[][] saida = new double[val.length]
[val[0].length];
for (int i=0; i<saida.length; i++) {
for (int j=0; j<saida[0].length; j++)
saida[i][j] = val[i][j] * (1-desc[i][j]);
}
return(saida);
}
public static void main(String[] args) {
}
}
AreaPiscina.java
Tamb´em possui seu
pr´oprio main
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 18 / 28
Classes em Java
Uma classe pode ter v´arios m´etodos e atributos
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 19 / 28
Classes em Java
Uma classe pode ter v´arios m´etodos e atributos
Costumamos colocar em uma mesma classe
somente os m´etodos e atributos afins
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 19 / 28
Classes em Java
Uma classe pode ter v´arios m´etodos e atributos
Costumamos colocar em uma mesma classe
somente os m´etodos e atributos afins
Atributos e m´etodos relativos ao c´alculo da ´area da casa em
AreaCasa
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 19 / 28
Classes em Java
Uma classe pode ter v´arios m´etodos e atributos
Costumamos colocar em uma mesma classe
somente os m´etodos e atributos afins
Atributos e m´etodos relativos ao c´alculo da ´area da casa em
AreaCasa
Atributos e m´etodos relativos ao c´alculo da ´area da piscina
em AreaPiscina
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 19 / 28
Classes em Java
Classes diferentes podem inclusive ter m´etodos e
atributos homˆonimos
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 20 / 28
Classes em Java
Classes diferentes podem inclusive ter m´etodos e
atributos homˆonimos
class AreaCasa {
}
class AreaPiscina {
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 20 / 28
Classes em Java
Classes diferentes podem inclusive ter m´etodos e
atributos homˆonimos
class AreaCasa {
static void area(float lateral,
float cquarto)
...
}
class AreaPiscina {
static double area(double raio)
...
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 20 / 28
Classes em Java
Classes diferentes podem inclusive ter m´etodos e
atributos homˆonimos
class AreaCasa {
static void area(float lateral,
float cquarto)
...
static double valor(double area)
...
}
class AreaPiscina {
static double area(double raio)
...
static double valor(double area,
int material)
...
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 20 / 28
Classes em Java
Classes diferentes podem inclusive ter m´etodos e
atributos homˆonimos
class AreaCasa {
static void area(float lateral,
float cquarto)
...
static double valor(double area)
...
public static void main(String[]
args)
...
}
class AreaPiscina {
static double area(double raio)
...
static double valor(double area,
int material)
...
public static void main(String[]
args)
...
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 20 / 28
Classes em Java
Classes diferentes podem inclusive ter m´etodos e
atributos homˆonimos
class AreaCasa {
static void area(float lateral,
float cquarto)
...
static double valor(double area)
...
public static void main(String[]
args)
...
}
class AreaPiscina {
static double area(double raio)
...
static double valor(double area,
int material)
...
public static void main(String[]
args)
...
}
A diferen¸ca se d´a em que area de AreaCasa tem
significado diferente de area de AreaPiscina
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 20 / 28
Classes em Java
E como usamos
essas classes?
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 21 / 28
Classes em Java
E como usamos
essas classes?
Fa¸camos antes
uma mudan¸ca
em AreaCasa:
class AreaCasa {
static double valorM2 = 1500;
static double area(double lateral,
double cquarto){
double areat=-1;
if (lateral>=0 && cquarto>=0) {
areat = lateral*lateral;
areat += cquarto*lateral;
}
return(areat);
}
static double valor(double area) {
if (area >= 0) return(valorM2*area);
return(-1);
}
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 21 / 28
Classes em Java
E como usamos
essas classes?
Fa¸camos antes
uma mudan¸ca
em AreaCasa:
Fa¸camos retornar
a ´area
class AreaCasa {
static double valorM2 = 1500;
static double area(double lateral,
double cquarto){
double areat=-1;
if (lateral>=0 && cquarto>=0) {
areat = lateral*lateral;
areat += cquarto*lateral;
}
return(areat);
}
static double valor(double area) {
if (area >= 0) return(valorM2*area);
return(-1);
}
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 21 / 28
Classes em Java
Considere agora
uma classe para
cria¸c˜ao de um
projeto
arquitetˆonico:
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 22 / 28
Classes em Java
Considere agora
uma classe para
cria¸c˜ao de um
projeto
arquitetˆonico:
class Projeto {
/* Calcula a ´area de uma casa com piscina */
static double area(double lateral,
double cquarto, double raio) {
return(AreaCasa.area(lateral,cquarto) +
AreaPiscina.area(raio));
}
public static void main(String[] args) {
System.out.println(area(15,10,4.2));
}
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 22 / 28
Classes em Java
Considere agora
uma classe para
cria¸c˜ao de um
projeto
arquitetˆonico:
Note que ela usa
m´etodos definidos
class Projeto {
/* Calcula a ´area de uma casa com piscina */
static double area(double lateral,
double cquarto, double raio) {
return(AreaCasa.area(lateral,cquarto) +
AreaPiscina.area(raio));
}
public static void main(String[] args) {
System.out.println(area(15,10,4.2));
}
}
em outras classes (outros arquivos)
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 22 / 28
Classes em Java
Considere agora
uma classe para
cria¸c˜ao de um
projeto
arquitetˆonico:
Note que ela usa
m´etodos definidos
class Projeto {
/* Calcula a ´area de uma casa com piscina */
static double area(double lateral,
double cquarto, double raio) {
return(AreaCasa.area(lateral,cquarto) +
AreaPiscina.area(raio));
}
public static void main(String[] args) {
System.out.println(area(15,10,4.2));
}
}
em outras classes (outros arquivos)
Em java podemos chamar m´etodos de outras classes de
dentro de uma classe
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 22 / 28
Classes em Java
O que acontece na mem´oria quando executamos
esse c´odigo?
class Projeto {
static double area(double lateral, double cquarto,
double raio) {
return(AreaCasa.area(lateral,cquarto) +
AreaPiscina.area(raio));
}
public static void main(String[] args) {
System.out.println(area(15,10,4.2));
}
}
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 23 / 28
Classes em Java
Espa¸co ´e reservado
para as vari´aveis
locais e parˆametros
de area
class Projeto {
static double area(double lateral,
double cquarto, double raio) {
return(AreaCasa.area(lateral,cquarto) +
AreaPiscina.area(raio));
}
public static void main(String[] args) {
System.out.println(area(15,10,4.2));
}
}
Projeto
main
args
0x23f
area
lateral
0x28f
cquarto
0xf8f
raio
0x885
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 24 / 28
Classes em Java
Espa¸co ´e reservado
para as vari´aveis
locais e parˆametros
de area
Os valores dos
parˆametros s˜ao
copiados para l´a
class Projeto {
static double area(double lateral,
double cquarto, double raio) {
return(AreaCasa.area(lateral,cquarto) +
AreaPiscina.area(raio));
}
public static void main(String[] args) {
System.out.println(area(15,10,4.2));
}
}
Projeto
main
args
0x23f
area
lateral
0x28f
15 cquarto
0xf8f
10 raio
0x885
4.2
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 24 / 28
Classes em Java
Ao chamar
AreaCasa.area,
espa¸co ´e reservado
class Projeto {
static double area(double lateral,
double cquarto, double raio) {
return(AreaCasa.area(lateral,cquarto) +
AreaPiscina.area(raio));
}
public static void main(String[] args) {
System.out.println(area(15,10,4.2));
}
}
Projeto
main
args
0x23f
area
lateral
0x28f
15 cquarto
0xf8f
10 raio
0x885
4.2
AreaCasa
valorM2
0xf05
1500
area
lateral
0xfff
cquarto
0xfaf
areat
0x005
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 25 / 28
Classes em Java
Ao chamar
AreaCasa.area,
espa¸co ´e reservado
Inclusive para atributos
da classe → podem
ser ´uteis para algum
m´etodo dela
class Projeto {
static double area(double lateral,
double cquarto, double raio) {
return(AreaCasa.area(lateral,cquarto) +
AreaPiscina.area(raio));
}
public static void main(String[] args) {
System.out.println(area(15,10,4.2));
}
}
Projeto
main
args
0x23f
area
lateral
0x28f
15 cquarto
0xf8f
10 raio
0x885
4.2
AreaCasa
valorM2
0xf05
1500
area
lateral
0xfff
cquarto
0xfaf
areat
0x005
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 25 / 28
Classes em Java
Ao chamar
AreaCasa.area,
espa¸co ´e reservado
Inclusive para atributos
da classe → podem
ser ´uteis para algum
m´etodo dela
Os valores s˜ao
armazenados nos
parˆametros
class Projeto {
static double area(double lateral,
double cquarto, double raio) {
return(AreaCasa.area(lateral,cquarto) +
AreaPiscina.area(raio));
}
public static void main(String[] args) {
System.out.println(area(15,10,4.2));
}
}
Projeto
main
args
0x23f
area
lateral
0x28f
15 cquarto
0xf8f
10 raio
0x885
4.2
AreaCasa
valorM2
0xf05
1500
area
lateral
0xfff
15 cquarto
0xfaf
10 areat
0x005
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 25 / 28
Classes em Java
Ao chamar
AreaCasa.area,
espa¸co ´e reservado
Inclusive para atributos
da classe → podem
ser ´uteis para algum
m´etodo dela
Os valores s˜ao
armazenados nos
parˆametros
O c´alculo da ´area ´e
feito
class Projeto {
static double area(double lateral,
double cquarto, double raio) {
return(AreaCasa.area(lateral,cquarto) +
AreaPiscina.area(raio));
}
public static void main(String[] args) {
System.out.println(area(15,10,4.2));
}
}
Projeto
main
args
0x23f
area
lateral
0x28f
15 cquarto
0xf8f
10 raio
0x885
4.2
AreaCasa
valorM2
0xf05
1500
area
lateral
0xfff
15 cquarto
0xfaf
10 areat
0x005
375
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 25 / 28
Classes em Java
O mesmo acontece
com
AreaPiscina.area
class Projeto {
static double area(double lateral,
double cquarto, double raio) {
return(AreaCasa.area(lateral,cquarto) +
AreaPiscina.area(raio));
}
public static void main(String[] args) {
System.out.println(area(15,10,4.2));
}
}
Projeto
main
args
0x23f
area
lateral
0x28f
15 cquarto
0xf8f
10 raio
0x885
4.2
AreaCasa
valorM2
0xf05
1500
AreaPiscina
area
raio
0xaaf
VINIL
0xbbb
1
0xcab
1500 1100 750 500 precos
0xaa5
0xcab . . .
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 26 / 28
Classes em Java
O mesmo acontece
com
AreaPiscina.area
class Projeto {
static double area(double lateral,
double cquarto, double raio) {
return(AreaCasa.area(lateral,cquarto) +
AreaPiscina.area(raio));
}
public static void main(String[] args) {
System.out.println(area(15,10,4.2));
}
}
Projeto
main
args
0x23f
area
lateral
0x28f
15 cquarto
0xf8f
10 raio
0x885
4.2
AreaCasa
valorM2
0xf05
1500
AreaPiscina
area
raio
0xaaf
4.2 VINIL
0xbbb
1
0xcab
1500 1100 750 500 precos
0xaa5
0xcab . . .
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 26 / 28
Referˆencias
http:
//www.cs.aau.dk/~normark/prog3-03/html/notes/
paradigms_themes-paradigm-overview-section.html
Brookshear, J.G.: Computer Science: An Overview. 9ed.
Addison-Wesley:New York. 2007.
Reynolds, C.; Tymann, P.: Principles of Computer Science.
1ed. McGraw-Hill:New York. 2008.
Goldman, A.; Kon, F.; Silva, P.J.S.: Introdu¸c˜ao `a Ciˆencia da
Computa¸c˜ao com Java e Orienta¸c˜ao a Objetos. 1ed.
IME-USP:S˜ao Paulo. 2006.
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 27 / 28
Videoaula
https://www.youtube.com/watch?v=RMIrqhSivso
(cobre parcialmente o conte´udo)
Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 28 / 28

Mais conteúdo relacionado

Semelhante a (ACH2001) Introdução à Programação - Aula 13

Alg1 aula00-1sem2011
Alg1 aula00-1sem2011Alg1 aula00-1sem2011
Alg1 aula00-1sem2011
Anderson Favaro
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 01
(ACH2002) Introdução à Análise de Algoritmos - Aula 01(ACH2002) Introdução à Análise de Algoritmos - Aula 01
(ACH2002) Introdução à Análise de Algoritmos - Aula 01
Norton Trevisan Roman
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
Manuel Menezes de Sequeira
 
UML - parte 1
UML - parte 1UML - parte 1
UML - parte 1
Rodrigo Reis
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 07
(ACH2002) Introdução à Análise de Algoritmos - Aula 07(ACH2002) Introdução à Análise de Algoritmos - Aula 07
(ACH2002) Introdução à Análise de Algoritmos - Aula 07
Norton Trevisan Roman
 
Resolvendo Problemas
Resolvendo ProblemasResolvendo Problemas
Resolvendo Problemas
jacqe
 
Aula Inaugural - Programação Imperativa
Aula Inaugural - Programação ImperativaAula Inaugural - Programação Imperativa
Aula Inaugural - Programação Imperativa
Ivna Valença
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 13
(ACH2002) Introdução à Análise de Algoritmos - Aula 13(ACH2002) Introdução à Análise de Algoritmos - Aula 13
(ACH2002) Introdução à Análise de Algoritmos - Aula 13
Norton Trevisan Roman
 
Conhecendo os Padrões De Projetos
Conhecendo os Padrões De ProjetosConhecendo os Padrões De Projetos
Conhecendo os Padrões De Projetos
cejug
 
Apostila programao orientada a objeto no abap
Apostila programao orientada a objeto no abapApostila programao orientada a objeto no abap
Apostila programao orientada a objeto no abap
Gabriel Magalhães
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 12
(ACH2002) Introdução à Análise de Algoritmos - Aula 12(ACH2002) Introdução à Análise de Algoritmos - Aula 12
(ACH2002) Introdução à Análise de Algoritmos - Aula 12
Norton Trevisan Roman
 
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
tdc-globalcode
 

Semelhante a (ACH2001) Introdução à Programação - Aula 13 (12)

Alg1 aula00-1sem2011
Alg1 aula00-1sem2011Alg1 aula00-1sem2011
Alg1 aula00-1sem2011
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 01
(ACH2002) Introdução à Análise de Algoritmos - Aula 01(ACH2002) Introdução à Análise de Algoritmos - Aula 01
(ACH2002) Introdução à Análise de Algoritmos - Aula 01
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
 
UML - parte 1
UML - parte 1UML - parte 1
UML - parte 1
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 07
(ACH2002) Introdução à Análise de Algoritmos - Aula 07(ACH2002) Introdução à Análise de Algoritmos - Aula 07
(ACH2002) Introdução à Análise de Algoritmos - Aula 07
 
Resolvendo Problemas
Resolvendo ProblemasResolvendo Problemas
Resolvendo Problemas
 
Aula Inaugural - Programação Imperativa
Aula Inaugural - Programação ImperativaAula Inaugural - Programação Imperativa
Aula Inaugural - Programação Imperativa
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 13
(ACH2002) Introdução à Análise de Algoritmos - Aula 13(ACH2002) Introdução à Análise de Algoritmos - Aula 13
(ACH2002) Introdução à Análise de Algoritmos - Aula 13
 
Conhecendo os Padrões De Projetos
Conhecendo os Padrões De ProjetosConhecendo os Padrões De Projetos
Conhecendo os Padrões De Projetos
 
Apostila programao orientada a objeto no abap
Apostila programao orientada a objeto no abapApostila programao orientada a objeto no abap
Apostila programao orientada a objeto no abap
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 12
(ACH2002) Introdução à Análise de Algoritmos - Aula 12(ACH2002) Introdução à Análise de Algoritmos - Aula 12
(ACH2002) Introdução à Análise de Algoritmos - Aula 12
 
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
 

Mais de Norton Trevisan Roman

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04
Norton Trevisan Roman
 

Mais de Norton Trevisan Roman (20)

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
 
(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04
 

Último

O Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdf
O Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdfO Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdf
O Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdf
silvamelosilva300
 
Vogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantilVogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantil
mamaeieby
 
A Evolução da história da Física - Albert Einstein
A Evolução da história da Física - Albert EinsteinA Evolução da história da Física - Albert Einstein
A Evolução da história da Física - Albert Einstein
WelberMerlinCardoso
 
Famílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do AssaréFamílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do Assaré
profesfrancleite
 
Leonardo da Vinci .pptx
Leonardo da Vinci                  .pptxLeonardo da Vinci                  .pptx
Leonardo da Vinci .pptx
TomasSousa7
 
D20 - Descritores SAEB de Língua Portuguesa
D20 - Descritores SAEB de Língua PortuguesaD20 - Descritores SAEB de Língua Portuguesa
D20 - Descritores SAEB de Língua Portuguesa
eaiprofpolly
 
Reino-Vegetal plantas e demais conceitos .pptx
Reino-Vegetal plantas e demais conceitos .pptxReino-Vegetal plantas e demais conceitos .pptx
Reino-Vegetal plantas e demais conceitos .pptx
CarinaSantos916505
 
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxPP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptxTreinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
MarcosPaulo777883
 
karl marx biografia resumida com suas obras e história de vida
karl marx biografia resumida com suas obras e história de vidakarl marx biografia resumida com suas obras e história de vida
karl marx biografia resumida com suas obras e história de vida
KleginaldoPaz2
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
joseanesouza36
 
UFCD_3546_Prevenção e primeiros socorros_geriatria.pdf
UFCD_3546_Prevenção e primeiros socorros_geriatria.pdfUFCD_3546_Prevenção e primeiros socorros_geriatria.pdf
UFCD_3546_Prevenção e primeiros socorros_geriatria.pdf
Manuais Formação
 
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptxSlides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
Fernão Lopes. pptx
Fernão Lopes.                       pptxFernão Lopes.                       pptx
Fernão Lopes. pptx
TomasSousa7
 
GÊNERO TEXTUAL - POEMA.pptx
GÊNERO      TEXTUAL     -     POEMA.pptxGÊNERO      TEXTUAL     -     POEMA.pptx
GÊNERO TEXTUAL - POEMA.pptx
Marlene Cunhada
 
slides de Didática 2.pdf para apresentar
slides de Didática 2.pdf para apresentarslides de Didática 2.pdf para apresentar
slides de Didática 2.pdf para apresentar
JoeteCarvalho
 
UFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdfUFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdf
Manuais Formação
 
Aula 2 - Revisando o significado de fração - Parte 2.pptx
Aula 2 - Revisando o significado de fração - Parte 2.pptxAula 2 - Revisando o significado de fração - Parte 2.pptx
Aula 2 - Revisando o significado de fração - Parte 2.pptx
LILIANPRESTESSCUDELE
 
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
YeniferGarcia36
 
Cartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptxCartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptx
Zenir Carmen Bez Trombeta
 

Último (20)

O Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdf
O Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdfO Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdf
O Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdf
 
Vogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantilVogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantil
 
A Evolução da história da Física - Albert Einstein
A Evolução da história da Física - Albert EinsteinA Evolução da história da Física - Albert Einstein
A Evolução da história da Física - Albert Einstein
 
Famílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do AssaréFamílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do Assaré
 
Leonardo da Vinci .pptx
Leonardo da Vinci                  .pptxLeonardo da Vinci                  .pptx
Leonardo da Vinci .pptx
 
D20 - Descritores SAEB de Língua Portuguesa
D20 - Descritores SAEB de Língua PortuguesaD20 - Descritores SAEB de Língua Portuguesa
D20 - Descritores SAEB de Língua Portuguesa
 
Reino-Vegetal plantas e demais conceitos .pptx
Reino-Vegetal plantas e demais conceitos .pptxReino-Vegetal plantas e demais conceitos .pptx
Reino-Vegetal plantas e demais conceitos .pptx
 
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxPP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
 
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptxTreinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
 
karl marx biografia resumida com suas obras e história de vida
karl marx biografia resumida com suas obras e história de vidakarl marx biografia resumida com suas obras e história de vida
karl marx biografia resumida com suas obras e história de vida
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
 
UFCD_3546_Prevenção e primeiros socorros_geriatria.pdf
UFCD_3546_Prevenção e primeiros socorros_geriatria.pdfUFCD_3546_Prevenção e primeiros socorros_geriatria.pdf
UFCD_3546_Prevenção e primeiros socorros_geriatria.pdf
 
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptxSlides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
 
Fernão Lopes. pptx
Fernão Lopes.                       pptxFernão Lopes.                       pptx
Fernão Lopes. pptx
 
GÊNERO TEXTUAL - POEMA.pptx
GÊNERO      TEXTUAL     -     POEMA.pptxGÊNERO      TEXTUAL     -     POEMA.pptx
GÊNERO TEXTUAL - POEMA.pptx
 
slides de Didática 2.pdf para apresentar
slides de Didática 2.pdf para apresentarslides de Didática 2.pdf para apresentar
slides de Didática 2.pdf para apresentar
 
UFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdfUFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdf
 
Aula 2 - Revisando o significado de fração - Parte 2.pptx
Aula 2 - Revisando o significado de fração - Parte 2.pptxAula 2 - Revisando o significado de fração - Parte 2.pptx
Aula 2 - Revisando o significado de fração - Parte 2.pptx
 
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
 
Cartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptxCartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptx
 

(ACH2001) Introdução à Programação - Aula 13

  • 1. Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos Norton Trevisan Roman 7 de abril de 2020 Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 1 / 28
  • 2. Paradigma Imperativo At´e agora trabalhamos com um modo de abordar problemas: Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
  • 3. Paradigma Imperativo At´e agora trabalhamos com um modo de abordar problemas: Primeiro fa¸ca isso, depois aquilo Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
  • 4. Paradigma Imperativo At´e agora trabalhamos com um modo de abordar problemas: Primeiro fa¸ca isso, depois aquilo Trabalhamos com comandos dados em uma ordem espec´ıfica Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
  • 5. Paradigma Imperativo At´e agora trabalhamos com um modo de abordar problemas: Primeiro fa¸ca isso, depois aquilo Trabalhamos com comandos dados em uma ordem espec´ıfica A abstra¸c˜ao natural ´e a subrotina Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
  • 6. Paradigma Imperativo At´e agora trabalhamos com um modo de abordar problemas: Primeiro fa¸ca isso, depois aquilo Trabalhamos com comandos dados em uma ordem espec´ıfica A abstra¸c˜ao natural ´e a subrotina Similar a rotinas do dia-a-dia: receitas, instru¸c˜oes para se fazer algo Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
  • 7. Paradigma Imperativo At´e agora trabalhamos com um modo de abordar problemas: Primeiro fa¸ca isso, depois aquilo Trabalhamos com comandos dados em uma ordem espec´ıfica A abstra¸c˜ao natural ´e a subrotina Similar a rotinas do dia-a-dia: receitas, instru¸c˜oes para se fazer algo Dados podem estar separados das subrotinas Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
  • 8. Paradigma Imperativo At´e agora trabalhamos com um modo de abordar problemas: Primeiro fa¸ca isso, depois aquilo Trabalhamos com comandos dados em uma ordem espec´ıfica A abstra¸c˜ao natural ´e a subrotina Similar a rotinas do dia-a-dia: receitas, instru¸c˜oes para se fazer algo Dados podem estar separados das subrotinas Agrupados conforme o dom´ınio ou necessidade computacional Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 2 / 28
  • 9. Paradigma Imperativo Esse ´e o paradigma imperativo Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 3 / 28
  • 10. Paradigma Imperativo Esse ´e o paradigma imperativo Tamb´em conhecido como procedimental (ou procedural) Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 3 / 28
  • 11. Paradigma Imperativo Esse ´e o paradigma imperativo Tamb´em conhecido como procedimental (ou procedural) Vˆe o problema como um conjunto de passos a serem resolvidos da forma “Primeiro fa¸ca isso, depois aquilo” Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 3 / 28
  • 12. Paradigma Imperativo Esse ´e o paradigma imperativo Tamb´em conhecido como procedimental (ou procedural) Vˆe o problema como um conjunto de passos a serem resolvidos da forma “Primeiro fa¸ca isso, depois aquilo” Baseado totalmente na m´aquina de Von Neumann Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 3 / 28
  • 13. Paradigma Imperativo Esse ´e o paradigma imperativo Tamb´em conhecido como procedimental (ou procedural) Vˆe o problema como um conjunto de passos a serem resolvidos da forma “Primeiro fa¸ca isso, depois aquilo” Baseado totalmente na m´aquina de Von Neumann Ex: C, Pascal. Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 3 / 28
  • 14. Paradigma Imperativo Esse ´e o paradigma imperativo Tamb´em conhecido como procedimental (ou procedural) Vˆe o problema como um conjunto de passos a serem resolvidos da forma “Primeiro fa¸ca isso, depois aquilo” Baseado totalmente na m´aquina de Von Neumann Ex: C, Pascal. int c = a + 2; Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 3 / 28
  • 15. Paradigma Funcional Avalie uma express˜ao e use o valor resultante para algo Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
  • 16. Paradigma Funcional Avalie uma express˜ao e use o valor resultante para algo A abstra¸c˜ao natural ´e a fun¸c˜ao Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
  • 17. Paradigma Funcional Avalie uma express˜ao e use o valor resultante para algo A abstra¸c˜ao natural ´e a fun¸c˜ao Abstrai uma express˜ao simples como uma fun¸c˜ao que pode ser avaliada como uma express˜ao Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
  • 18. Paradigma Funcional Avalie uma express˜ao e use o valor resultante para algo A abstra¸c˜ao natural ´e a fun¸c˜ao Abstrai uma express˜ao simples como uma fun¸c˜ao que pode ser avaliada como uma express˜ao Todos os c´alculos s˜ao feitos pela aplica¸c˜ao de fun¸c˜oes Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
  • 19. Paradigma Funcional Avalie uma express˜ao e use o valor resultante para algo A abstra¸c˜ao natural ´e a fun¸c˜ao Abstrai uma express˜ao simples como uma fun¸c˜ao que pode ser avaliada como uma express˜ao Todos os c´alculos s˜ao feitos pela aplica¸c˜ao de fun¸c˜oes N˜ao h´a vari´aveis globais, apenas parˆametros e vari´aveis locais Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
  • 20. Paradigma Funcional Avalie uma express˜ao e use o valor resultante para algo A abstra¸c˜ao natural ´e a fun¸c˜ao Abstrai uma express˜ao simples como uma fun¸c˜ao que pode ser avaliada como uma express˜ao Todos os c´alculos s˜ao feitos pela aplica¸c˜ao de fun¸c˜oes N˜ao h´a vari´aveis globais, apenas parˆametros e vari´aveis locais Baseado na matem´atica e na teoria das fun¸c˜oes Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
  • 21. Paradigma Funcional Avalie uma express˜ao e use o valor resultante para algo A abstra¸c˜ao natural ´e a fun¸c˜ao Abstrai uma express˜ao simples como uma fun¸c˜ao que pode ser avaliada como uma express˜ao Todos os c´alculos s˜ao feitos pela aplica¸c˜ao de fun¸c˜oes N˜ao h´a vari´aveis globais, apenas parˆametros e vari´aveis locais Baseado na matem´atica e na teoria das fun¸c˜oes Ex: Lisp (LISt Processing), Scheme Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
  • 22. Paradigma Funcional Avalie uma express˜ao e use o valor resultante para algo A abstra¸c˜ao natural ´e a fun¸c˜ao Abstrai uma express˜ao simples como uma fun¸c˜ao que pode ser avaliada como uma express˜ao Todos os c´alculos s˜ao feitos pela aplica¸c˜ao de fun¸c˜oes N˜ao h´a vari´aveis globais, apenas parˆametros e vari´aveis locais Baseado na matem´atica e na teoria das fun¸c˜oes Ex: Lisp (LISt Processing), Scheme (let ((a 3) (c (+ a 2)))) Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 4 / 28
  • 23. Paradigma L´ogico Responda uma pergunta atrav´es da busca pela solu¸c˜ao Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
  • 24. Paradigma L´ogico Responda uma pergunta atrav´es da busca pela solu¸c˜ao Baseado em axiomas, regras de inferˆencias e buscas Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
  • 25. Paradigma L´ogico Responda uma pergunta atrav´es da busca pela solu¸c˜ao Baseado em axiomas, regras de inferˆencias e buscas Muito usado em dom´ınios que lidam com a extra¸c˜ao de conhecimento a partir de fatos e rela¸c˜oes entre eles Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
  • 26. Paradigma L´ogico Responda uma pergunta atrav´es da busca pela solu¸c˜ao Baseado em axiomas, regras de inferˆencias e buscas Muito usado em dom´ınios que lidam com a extra¸c˜ao de conhecimento a partir de fatos e rela¸c˜oes entre eles A execu¸c˜ao do problema torna-se uma busca sistem´atica em um conjunto de fatos Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
  • 27. Paradigma L´ogico Responda uma pergunta atrav´es da busca pela solu¸c˜ao Baseado em axiomas, regras de inferˆencias e buscas Muito usado em dom´ınios que lidam com a extra¸c˜ao de conhecimento a partir de fatos e rela¸c˜oes entre eles A execu¸c˜ao do problema torna-se uma busca sistem´atica em um conjunto de fatos Usa, para isso, um conjunto de regras de inferˆencia Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
  • 28. Paradigma L´ogico Responda uma pergunta atrav´es da busca pela solu¸c˜ao Baseado em axiomas, regras de inferˆencias e buscas Muito usado em dom´ınios que lidam com a extra¸c˜ao de conhecimento a partir de fatos e rela¸c˜oes entre eles A execu¸c˜ao do problema torna-se uma busca sistem´atica em um conjunto de fatos Usa, para isso, um conjunto de regras de inferˆencia Ex: Prolog, Mercury Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
  • 29. Paradigma L´ogico Responda uma pergunta atrav´es da busca pela solu¸c˜ao Baseado em axiomas, regras de inferˆencias e buscas Muito usado em dom´ınios que lidam com a extra¸c˜ao de conhecimento a partir de fatos e rela¸c˜oes entre eles A execu¸c˜ao do problema torna-se uma busca sistem´atica em um conjunto de fatos Usa, para isso, um conjunto de regras de inferˆencia Ex: Prolog, Mercury C is A + 2. Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 5 / 28
  • 30. Paradigma Orientado a Objetos Baseia-se no agrupamento de aspectos do programa, separando-os do resto Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
  • 31. Paradigma Orientado a Objetos Baseia-se no agrupamento de aspectos do programa, separando-os do resto Conforme conceitos importantes para o dom´ınio de interesse Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
  • 32. Paradigma Orientado a Objetos Baseia-se no agrupamento de aspectos do programa, separando-os do resto Conforme conceitos importantes para o dom´ınio de interesse Tecnicalidades da programa¸c˜ao ficam em segundo plano Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
  • 33. Paradigma Orientado a Objetos Baseia-se no agrupamento de aspectos do programa, separando-os do resto Conforme conceitos importantes para o dom´ınio de interesse Tecnicalidades da programa¸c˜ao ficam em segundo plano Muito importante quando os programas ficam grandes Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
  • 34. Paradigma Orientado a Objetos Baseia-se no agrupamento de aspectos do programa, separando-os do resto Conforme conceitos importantes para o dom´ınio de interesse Tecnicalidades da programa¸c˜ao ficam em segundo plano Muito importante quando os programas ficam grandes Opera¸c˜oes e dados s˜ao encapsulados em classes Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
  • 35. Paradigma Orientado a Objetos Baseia-se no agrupamento de aspectos do programa, separando-os do resto Conforme conceitos importantes para o dom´ınio de interesse Tecnicalidades da programa¸c˜ao ficam em segundo plano Muito importante quando os programas ficam grandes Opera¸c˜oes e dados s˜ao encapsulados em classes Esconde informa¸c˜ao para proteger propriedades internas da classe Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
  • 36. Paradigma Orientado a Objetos Baseia-se no agrupamento de aspectos do programa, separando-os do resto Conforme conceitos importantes para o dom´ınio de interesse Tecnicalidades da programa¸c˜ao ficam em segundo plano Muito importante quando os programas ficam grandes Opera¸c˜oes e dados s˜ao encapsulados em classes Esconde informa¸c˜ao para proteger propriedades internas da classe Classes s˜ao organizadas hierarquicamente, por meio de heran¸ca Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
  • 37. Paradigma Orientado a Objetos Baseia-se no agrupamento de aspectos do programa, separando-os do resto Conforme conceitos importantes para o dom´ınio de interesse Tecnicalidades da programa¸c˜ao ficam em segundo plano Muito importante quando os programas ficam grandes Opera¸c˜oes e dados s˜ao encapsulados em classes Esconde informa¸c˜ao para proteger propriedades internas da classe Classes s˜ao organizadas hierarquicamente, por meio de heran¸ca Permite a extens˜ao ou especializa¸c˜ao de classes Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 6 / 28
  • 38. Paradigma Orientado a Objetos Java, C++ (compat´ıveis com imperativo) Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
  • 39. Paradigma Orientado a Objetos Java, C++ (compat´ıveis com imperativo) int c = a + 2; Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
  • 40. Paradigma Orientado a Objetos Java, C++ (compat´ıveis com imperativo) int c = a + 2; Integer c = new Integer(a.intValue() + 2); Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
  • 41. Paradigma Orientado a Objetos Java, C++ (compat´ıveis com imperativo) int c = a + 2; Integer c = new Integer(a.intValue() + 2); Ruby, Smalltalk (orienta¸c˜ao a objetos “pura” – tudo ´e objeto, inclusive literais) Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
  • 42. Paradigma Orientado a Objetos Java, C++ (compat´ıveis com imperativo) int c = a + 2; Integer c = new Integer(a.intValue() + 2); Ruby, Smalltalk (orienta¸c˜ao a objetos “pura” – tudo ´e objeto, inclusive literais) c = a + 2 Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
  • 43. Paradigma Orientado a Objetos Java, C++ (compat´ıveis com imperativo) int c = a + 2; Integer c = new Integer(a.intValue() + 2); Ruby, Smalltalk (orienta¸c˜ao a objetos “pura” – tudo ´e objeto, inclusive literais) c = a + 2 c = a.+(2) Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
  • 44. Paradigma Orientado a Objetos Java, C++ (compat´ıveis com imperativo) int c = a + 2; Integer c = new Integer(a.intValue() + 2); Ruby, Smalltalk (orienta¸c˜ao a objetos “pura” – tudo ´e objeto, inclusive literais) c = a + 2 c = a.+(2) c = 2.+(a) Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 7 / 28
  • 45. Classes e Objetos Classes: Agrupamento de entidades que possuem alguns atributos e m´etodos em comum Representam o modelo por tr´as do problema – a ideia Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 8 / 28
  • 46. Classes e Objetos Classes: Agrupamento de entidades que possuem alguns atributos e m´etodos em comum Representam o modelo por tr´as do problema – a ideia Objetos: Representantes das classes Constituem as entidades computacionais que representam as classes S˜ao a implementa¸c˜ao f´ısica da classe Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 8 / 28
  • 47. Encapsulamento e Subclasses Encapsulamento Ato de agrupar entidades que contenham atributos e m´etodos em comum Atributos e m´etodos locais a um grupo de entidades ficam assim escondidos do resto do problema Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 9 / 28
  • 48. Encapsulamento e Subclasses Encapsulamento Ato de agrupar entidades que contenham atributos e m´etodos em comum Atributos e m´etodos locais a um grupo de entidades ficam assim escondidos do resto do problema Subclasses S˜ao sub-agrupamentos de entidades distintas, mas que possuem alguns atributos em comum Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 9 / 28
  • 49. Heran¸ca Quando criamos uma subclasse, o que acontece com os atributos e m´etodos da superclasse? Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
  • 50. Heran¸ca Quando criamos uma subclasse, o que acontece com os atributos e m´etodos da superclasse? S˜ao “herdados” pela subclasse Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
  • 51. Heran¸ca Quando criamos uma subclasse, o que acontece com os atributos e m´etodos da superclasse? S˜ao “herdados” pela subclasse Nem todos... mais tarde veremos Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
  • 52. Heran¸ca Quando criamos uma subclasse, o que acontece com os atributos e m´etodos da superclasse? S˜ao “herdados” pela subclasse Nem todos... mais tarde veremos Como se a subclasse possuisse tamb´em aqueles atributos e m´etodos Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
  • 53. Heran¸ca Quando criamos uma subclasse, o que acontece com os atributos e m´etodos da superclasse? S˜ao “herdados” pela subclasse Nem todos... mais tarde veremos Como se a subclasse possuisse tamb´em aqueles atributos e m´etodos N˜ao h´a a necessidade de repetir c´odigo Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
  • 54. Heran¸ca Quando criamos uma subclasse, o que acontece com os atributos e m´etodos da superclasse? S˜ao “herdados” pela subclasse Nem todos... mais tarde veremos Como se a subclasse possuisse tamb´em aqueles atributos e m´etodos N˜ao h´a a necessidade de repetir c´odigo Como separamos o problema em classes e subclasses? Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
  • 55. Heran¸ca Quando criamos uma subclasse, o que acontece com os atributos e m´etodos da superclasse? S˜ao “herdados” pela subclasse Nem todos... mais tarde veremos Como se a subclasse possuisse tamb´em aqueles atributos e m´etodos N˜ao h´a a necessidade de repetir c´odigo Como separamos o problema em classes e subclasses? Depender´a das caracter´ısticas do problema e da sua interpreta¸c˜ao dele Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 10 / 28
  • 56. Pondo os P´es no Ch˜ao Voltando `a casa... /* valor do metro quadrado da casa */ static double valorM2 = 1500; /* materiais da piscina */ static final int ALVENARIA = 0; static final int VINIL = 1; static final int FIBRA = 2; static final int PLASTICO = 3; /* pre¸cos dos materiais */ static double[] precos = {1500, 1100, 750, 500}; /* nomes dos materiais */ static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’, ’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’, ’c’,’o’}}; /* Calcula a ´area da casa */ static void areaCasa(float lateral, float cquarto) /* Calcula a ´area da piscina */ static double areaPiscina(double raio) ... /* Calcula o valor da constru¸c~ao da piscina */ static double valorPiscina(double area, int material) /* Calcula o valor total da constru¸c~ao */ static double valorCasa(double area) /* Carrega os valores das piscinas na matriz de ´area X material */ public static void carregaVal(double[][] m) /* Retorna matriz com os pre¸cos finais. */ public static double[][] calculaFinal( double[][] val, double[][] desc) Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 11 / 28
  • 57. Pondo os P´es no Ch˜ao Voltando `a casa... /* valor do metro quadrado da casa */ static double valorM2 = 1500; /* materiais da piscina */ static final int ALVENARIA = 0; static final int VINIL = 1; static final int FIBRA = 2; static final int PLASTICO = 3; /* pre¸cos dos materiais */ static double[] precos = {1500, 1100, 750, 500}; /* nomes dos materiais */ static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’, ’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’, ’c’,’o’}}; /* Calcula a ´area da casa */ static void areaCasa(float lateral, float cquarto) /* Calcula a ´area da piscina */ static double areaPiscina(double raio) ... /* Calcula o valor da constru¸c~ao da piscina */ static double valorPiscina(double area, int material) /* Calcula o valor total da constru¸c~ao */ static double valorCasa(double area) /* Carrega os valores das piscinas na matriz de ´area X material */ public static void carregaVal(double[][] m) /* Retorna matriz com os pre¸cos finais. */ public static double[][] calculaFinal( double[][] val, double[][] desc) Existiria uma divis˜ao natural aqui? Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 11 / 28
  • 58. Pondo os P´es no Ch˜ao Voltando `a casa... /* valor do metro quadrado da casa */ static double valorM2 = 1500; /* materiais da piscina */ static final int ALVENARIA = 0; static final int VINIL = 1; static final int FIBRA = 2; static final int PLASTICO = 3; /* pre¸cos dos materiais */ static double[] precos = {1500, 1100, 750, 500}; /* nomes dos materiais */ static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’, ’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’, ’c’,’o’}}; /* Calcula a ´area da casa */ static void areaCasa(float lateral, float cquarto) /* Calcula a ´area da piscina */ static double areaPiscina(double raio) ... /* Calcula o valor da constru¸c~ao da piscina */ static double valorPiscina(double area, int material) /* Calcula o valor total da constru¸c~ao */ static double valorCasa(double area) /* Carrega os valores das piscinas na matriz de ´area X material */ public static void carregaVal(double[][] m) /* Retorna matriz com os pre¸cos finais. */ public static double[][] calculaFinal( double[][] val, double[][] desc) Existiria uma divis˜ao natural aqui? M´etodos e atributos relativos `a casa... Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 11 / 28
  • 59. Pondo os P´es no Ch˜ao Voltando `a casa... /* valor do metro quadrado da casa */ static double valorM2 = 1500; /* materiais da piscina */ static final int ALVENARIA = 0; static final int VINIL = 1; static final int FIBRA = 2; static final int PLASTICO = 3; /* pre¸cos dos materiais */ static double[] precos = {1500, 1100, 750, 500}; /* nomes dos materiais */ static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’, ’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’, ’c’,’o’}}; /* Calcula a ´area da casa */ static void areaCasa(float lateral, float cquarto) /* Calcula a ´area da piscina */ static double areaPiscina(double raio) ... /* Calcula o valor da constru¸c~ao da piscina */ static double valorPiscina(double area, int material) /* Calcula o valor total da constru¸c~ao */ static double valorCasa(double area) /* Carrega os valores das piscinas na matriz de ´area X material */ public static void carregaVal(double[][] m) /* Retorna matriz com os pre¸cos finais. */ public static double[][] calculaFinal( double[][] val, double[][] desc) Existiria uma divis˜ao natural aqui? M´etodos e atributos relativos `a casa... E os relativos `a piscina Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 11 / 28
  • 60. Ent˜ao... Casa Piscina Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
  • 61. Ent˜ao... Casa Valor do metro quadrado Piscina Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
  • 62. Ent˜ao... Casa Valor do metro quadrado Piscina Tipos de materiais Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
  • 63. Ent˜ao... Casa Valor do metro quadrado Piscina Tipos de materiais Pre¸cos do m2 dos materiais Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
  • 64. Ent˜ao... Casa Valor do metro quadrado Piscina Tipos de materiais Pre¸cos do m2 dos materiais Nomes dos materiais Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
  • 65. Ent˜ao... Casa Valor do metro quadrado M´etodos: Piscina Tipos de materiais Pre¸cos do m2 dos materiais Nomes dos materiais Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
  • 66. Ent˜ao... Casa Valor do metro quadrado M´etodos: C´alculo da ´area Piscina Tipos de materiais Pre¸cos do m2 dos materiais Nomes dos materiais Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
  • 67. Ent˜ao... Casa Valor do metro quadrado M´etodos: C´alculo da ´area Piscina Tipos de materiais Pre¸cos do m2 dos materiais Nomes dos materiais M´etodos: Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
  • 68. Ent˜ao... Casa Valor do metro quadrado M´etodos: C´alculo da ´area Piscina Tipos de materiais Pre¸cos do m2 dos materiais Nomes dos materiais M´etodos: C´alculo da ´area Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
  • 69. Ent˜ao... Casa Valor do metro quadrado M´etodos: C´alculo da ´area C´alculo do valor total Piscina Tipos de materiais Pre¸cos do m2 dos materiais Nomes dos materiais M´etodos: C´alculo da ´area Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
  • 70. Ent˜ao... Casa Valor do metro quadrado M´etodos: C´alculo da ´area C´alculo do valor total Piscina Tipos de materiais Pre¸cos do m2 dos materiais Nomes dos materiais M´etodos: C´alculo da ´area C´alculo do valor total, e m´etodos auxiliares Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 12 / 28
  • 71. Ent˜ao... Podemos simplesmente criar duas classes para acomodar essas diferen¸cas Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 13 / 28
  • 72. Ent˜ao... Podemos simplesmente criar duas classes para acomodar essas diferen¸cas E como ficaria o c´alculo envolvendo casa e piscina? Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 13 / 28
  • 73. Ent˜ao... Podemos simplesmente criar duas classes para acomodar essas diferen¸cas E como ficaria o c´alculo envolvendo casa e piscina? Poderia ficar a cargo de uma terceira classe Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 13 / 28
  • 74. Ent˜ao... Podemos simplesmente criar duas classes para acomodar essas diferen¸cas E como ficaria o c´alculo envolvendo casa e piscina? Poderia ficar a cargo de uma terceira classe Ou poderia ficar dentro de Casa Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 13 / 28
  • 75. Ent˜ao... Podemos simplesmente criar duas classes para acomodar essas diferen¸cas E como ficaria o c´alculo envolvendo casa e piscina? Poderia ficar a cargo de uma terceira classe Ou poderia ficar dentro de Casa Nesse caso, cada casa teria um representante da classe Piscina dentro dela Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 13 / 28
  • 76. Classes em Java Como criamos uma classe em java? Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 14 / 28
  • 77. Classes em Java Como criamos uma classe em java? class Nome_da_classe { } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 14 / 28
  • 78. Classes em Java Como criamos uma classe em java? class Nome_da_classe { } Como v´ınhamos fazendo – o programa nada mais era que uma classe Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 14 / 28
  • 79. Classes em Java Como criamos uma classe em java? class Nome_da_classe { } Como v´ınhamos fazendo – o programa nada mais era que uma classe Como tal, deveria agrupar coisas que julgamos ser semelhantes Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 14 / 28
  • 80. Classes em Java Como criamos uma classe em java? class Nome_da_classe { } Como v´ınhamos fazendo – o programa nada mais era que uma classe Como tal, deveria agrupar coisas que julgamos ser semelhantes Por conven¸c˜ao, o nome de uma classe inicia em mai´uscula Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 14 / 28
  • 81. Classes em Java Componentes da classe: class Nome_da_classe { } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 15 / 28
  • 82. Classes em Java Componentes da classe: Atributos (ou campos) class Nome_da_classe { static int x = 2; } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 15 / 28
  • 83. Classes em Java Componentes da classe: Atributos (ou campos) M´etodos class Nome_da_classe { static int x = 2; static void faz(int y) { System.out.println(y); } } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 15 / 28
  • 84. Classes em Java Componentes da classe: Atributos (ou campos) M´etodos Todos tˆem que ser static? class Nome_da_classe { static int x = 2; static void faz(int y) { System.out.println(y); } } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 15 / 28
  • 85. Classes em Java Componentes da classe: Atributos (ou campos) M´etodos Todos tˆem que ser static? N˜ao. Veremos mais adiante... class Nome_da_classe { static int x = 2; static void faz(int y) { System.out.println(y); } } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 15 / 28
  • 86. Classes em Java Voltando `a casa... /* valor do metro quadrado da casa */ static double valorM2 = 1500; /* materiais da piscina */ static final int ALVENARIA = 0; static final int VINIL = 1; static final int FIBRA = 2; static final int PLASTICO = 3; /* pre¸cos dos materiais */ static double[] precos = {1500, 1100, 750, 500}; /* nomes dos materiais */ static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’, ’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’, ’c’,’o’}}; /* Calcula a ´area da casa */ static void areaCasa(float lateral, float cquarto) /* Calcula a ´area da piscina */ static double areaPiscina(double raio) ... /* Calcula o valor da constru¸c~ao da piscina */ static double valorPiscina(double area, int material) /* Calcula o valor total da constru¸c~ao */ static double valorCasa(double area) /* Carrega os valores das piscinas na matriz de ´area X material */ public static void carregaVal(double[][] m) /* Retorna matriz com os pre¸cos finais. */ public static double[][] calculaFinal( double[][] val, double[][] desc) Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 16 / 28
  • 87. Classes em Java Voltando `a casa... vamos reagrupar . . . /* valor do metro quadrado da casa */ static double valorM2 = 1500; /* materiais da piscina */ static final int ALVENARIA = 0; static final int VINIL = 1; static final int FIBRA = 2; static final int PLASTICO = 3; /* pre¸cos dos materiais */ static double[] precos = {1500, 1100, 750, 500}; /* nomes dos materiais */ static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’, ’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’, ’c’,’o’}}; /* Calcula a ´area da casa */ static void areaCasa(float lateral, float cquarto) /* Calcula a ´area da piscina */ static double areaPiscina(double raio) ... /* Calcula o valor da constru¸c~ao da piscina */ static double valorPiscina(double area, int material) /* Calcula o valor total da constru¸c~ao */ static double valorCasa(double area) /* Carrega os valores das piscinas na matriz de ´area X material */ public static void carregaVal(double[][] m) /* Retorna matriz com os pre¸cos finais. */ public static double[][] calculaFinal( double[][] val, double[][] desc) Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 16 / 28
  • 88. Classes em Java Voltando `a casa... vamos reagrupar . . . /* valor do metro quadrado da casa */ static double valorM2 = 1500; /* materiais da piscina */ static final int ALVENARIA = 0; static final int VINIL = 1; static final int FIBRA = 2; static final int PLASTICO = 3; /* pre¸cos dos materiais */ static double[] precos = {1500, 1100, 750, 500}; /* nomes dos materiais */ static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’, ’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’, ’c’,’o’}}; /* Calcula a ´area da casa */ static void areaCasa(float lateral, float cquarto) /* Calcula a ´area da piscina */ static double areaPiscina(double raio) ... /* Calcula o valor da constru¸c~ao da piscina */ static double valorPiscina(double area, int material) /* Calcula o valor total da constru¸c~ao */ static double valorCasa(double area) /* Carrega os valores das piscinas na matriz de ´area X material */ public static void carregaVal(double[][] m) /* Retorna matriz com os pre¸cos finais. */ public static double[][] calculaFinal( double[][] val, double[][] desc) Atributos e m´etodos relativos `a ´area da casa Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 16 / 28
  • 89. Classes em Java Voltando `a casa... vamos reagrupar . . . /* valor do metro quadrado da casa */ static double valorM2 = 1500; /* materiais da piscina */ static final int ALVENARIA = 0; static final int VINIL = 1; static final int FIBRA = 2; static final int PLASTICO = 3; /* pre¸cos dos materiais */ static double[] precos = {1500, 1100, 750, 500}; /* nomes dos materiais */ static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’, ’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’, ’c’,’o’}}; /* Calcula a ´area da casa */ static void areaCasa(float lateral, float cquarto) /* Calcula a ´area da piscina */ static double areaPiscina(double raio) ... /* Calcula o valor da constru¸c~ao da piscina */ static double valorPiscina(double area, int material) /* Calcula o valor total da constru¸c~ao */ static double valorCasa(double area) /* Carrega os valores das piscinas na matriz de ´area X material */ public static void carregaVal(double[][] m) /* Retorna matriz com os pre¸cos finais. */ public static double[][] calculaFinal( double[][] val, double[][] desc) Atributos e m´etodos relativos `a ´area da casa Atributos e m´etodos relativos `a ´area da piscina Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 16 / 28
  • 90. Classes em Java M´etodos relativos `a ´area da casa /* Programa para calcular a ´area de uma casa (e seus c^omodos) de 3 c^omodos: uma sala de 10X10m, um banheiro e um quarto de 5X7m cada.*/ class AreaCasa { /* valor do metro quadrado da casa */ static double valorM2 = 1500; /* Calcula a ´area da casa */ static void area(float lateral, float cquarto) { float areaq; // ´area do quarto float areas; // ´area da sala float areat; // ´area total if (lateral>=0 && cquarto>=0) { System.out.println("C´alculo da ´area da casa"); areas = lateral*lateral; System.out.println("A ´area da sala ´e "+areas); areaq = cquarto*(lateral/2); System.out.println("A ´area do banheiro ´e "+areaq); System.out.println("A ´area do quarto ´e "+areaq); areat = areas + 2*areaq; System.out.println("A ´area total ´e " + areat); } else System.out.println("Erro: par^ametro < 0"); } /* Calcula o valor total da casa */ static double valor(double area) { if (area >= 0) return(valorM2*area); return(-1); } public static void main(String[] args) { } } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 17 / 28
  • 91. Classes em Java M´etodos relativos `a ´area da casa /* Programa para calcular a ´area de uma casa (e seus c^omodos) de 3 c^omodos: uma sala de 10X10m, um banheiro e um quarto de 5X7m cada.*/ class AreaCasa { /* valor do metro quadrado da casa */ static double valorM2 = 1500; /* Calcula a ´area da casa */ static void area(float lateral, float cquarto) { float areaq; // ´area do quarto float areas; // ´area da sala float areat; // ´area total if (lateral>=0 && cquarto>=0) { System.out.println("C´alculo da ´area da casa"); areas = lateral*lateral; System.out.println("A ´area da sala ´e "+areas); areaq = cquarto*(lateral/2); System.out.println("A ´area do banheiro ´e "+areaq); System.out.println("A ´area do quarto ´e "+areaq); areat = areas + 2*areaq; System.out.println("A ´area total ´e " + areat); } else System.out.println("Erro: par^ametro < 0"); } /* Calcula o valor total da casa */ static double valor(double area) { if (area >= 0) return(valorM2*area); return(-1); } public static void main(String[] args) { } } Arquivo: AreaCasa.java Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 17 / 28
  • 92. Classes em Java M´etodos relativos `a ´area da casa /* Programa para calcular a ´area de uma casa (e seus c^omodos) de 3 c^omodos: uma sala de 10X10m, um banheiro e um quarto de 5X7m cada.*/ class AreaCasa { /* valor do metro quadrado da casa */ static double valorM2 = 1500; /* Calcula a ´area da casa */ static void area(float lateral, float cquarto) { float areaq; // ´area do quarto float areas; // ´area da sala float areat; // ´area total if (lateral>=0 && cquarto>=0) { System.out.println("C´alculo da ´area da casa"); areas = lateral*lateral; System.out.println("A ´area da sala ´e "+areas); areaq = cquarto*(lateral/2); System.out.println("A ´area do banheiro ´e "+areaq); System.out.println("A ´area do quarto ´e "+areaq); areat = areas + 2*areaq; System.out.println("A ´area total ´e " + areat); } else System.out.println("Erro: par^ametro < 0"); } /* Calcula o valor total da casa */ static double valor(double area) { if (area >= 0) return(valorM2*area); return(-1); } public static void main(String[] args) { } } Arquivo: AreaCasa.java Ela possui seu pr´oprio main Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 17 / 28
  • 93. Classes em Java M´etodos relativos `a ´area da piscina class AreaPiscina { static final int ALVENARIA = 0; static final int VINIL = 1; static final int FIBRA = 2; static final int PLASTICO = 3; static double[] precos = {1500, 1100, 750, 500}; static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’,’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’,’c’,’o’}}; static double area(double raio) { return((raio >= 0) ? Math.PI * Math.pow(raio,2) : -1); } static double valor(double area, int material) { if (material<ALVENARIA || material>PLASTICO || area<0) return(-1); return(area*precos[material]); } public static void carregaVal(double[][] m) { for (int i=0; i<m.length; i++) { for (int j=50; j<=200; j+=50) { m[i][j / 50 - 1] = precos[i] * j; } } } public static double[][] calculaFinal( double[][] val,double[][] desc) { double[][] saida = new double[val.length] [val[0].length]; for (int i=0; i<saida.length; i++) { for (int j=0; j<saida[0].length; j++) saida[i][j] = val[i][j] * (1-desc[i][j]); } return(saida); } public static void main(String[] args) { } } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 18 / 28
  • 94. Classes em Java M´etodos relativos `a ´area da piscina class AreaPiscina { static final int ALVENARIA = 0; static final int VINIL = 1; static final int FIBRA = 2; static final int PLASTICO = 3; static double[] precos = {1500, 1100, 750, 500}; static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’,’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’,’c’,’o’}}; static double area(double raio) { return((raio >= 0) ? Math.PI * Math.pow(raio,2) : -1); } static double valor(double area, int material) { if (material<ALVENARIA || material>PLASTICO || area<0) return(-1); return(area*precos[material]); } public static void carregaVal(double[][] m) { for (int i=0; i<m.length; i++) { for (int j=50; j<=200; j+=50) { m[i][j / 50 - 1] = precos[i] * j; } } } public static double[][] calculaFinal( double[][] val,double[][] desc) { double[][] saida = new double[val.length] [val[0].length]; for (int i=0; i<saida.length; i++) { for (int j=0; j<saida[0].length; j++) saida[i][j] = val[i][j] * (1-desc[i][j]); } return(saida); } public static void main(String[] args) { } } AreaPiscina.java Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 18 / 28
  • 95. Classes em Java M´etodos relativos `a ´area da piscina class AreaPiscina { static final int ALVENARIA = 0; static final int VINIL = 1; static final int FIBRA = 2; static final int PLASTICO = 3; static double[] precos = {1500, 1100, 750, 500}; static char[][] nomes = {{’A’,’l’,’v’,’e’,’n’,’a’,’r’,’i’,’a’}, {’V’,’i’,’n’,’i’,’l’}, {’F’,’i’,’b’,’r’,’a’}, {’P’,’l’,’´a’,’s’,’t’,’i’,’c’,’o’}}; static double area(double raio) { return((raio >= 0) ? Math.PI * Math.pow(raio,2) : -1); } static double valor(double area, int material) { if (material<ALVENARIA || material>PLASTICO || area<0) return(-1); return(area*precos[material]); } public static void carregaVal(double[][] m) { for (int i=0; i<m.length; i++) { for (int j=50; j<=200; j+=50) { m[i][j / 50 - 1] = precos[i] * j; } } } public static double[][] calculaFinal( double[][] val,double[][] desc) { double[][] saida = new double[val.length] [val[0].length]; for (int i=0; i<saida.length; i++) { for (int j=0; j<saida[0].length; j++) saida[i][j] = val[i][j] * (1-desc[i][j]); } return(saida); } public static void main(String[] args) { } } AreaPiscina.java Tamb´em possui seu pr´oprio main Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 18 / 28
  • 96. Classes em Java Uma classe pode ter v´arios m´etodos e atributos Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 19 / 28
  • 97. Classes em Java Uma classe pode ter v´arios m´etodos e atributos Costumamos colocar em uma mesma classe somente os m´etodos e atributos afins Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 19 / 28
  • 98. Classes em Java Uma classe pode ter v´arios m´etodos e atributos Costumamos colocar em uma mesma classe somente os m´etodos e atributos afins Atributos e m´etodos relativos ao c´alculo da ´area da casa em AreaCasa Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 19 / 28
  • 99. Classes em Java Uma classe pode ter v´arios m´etodos e atributos Costumamos colocar em uma mesma classe somente os m´etodos e atributos afins Atributos e m´etodos relativos ao c´alculo da ´area da casa em AreaCasa Atributos e m´etodos relativos ao c´alculo da ´area da piscina em AreaPiscina Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 19 / 28
  • 100. Classes em Java Classes diferentes podem inclusive ter m´etodos e atributos homˆonimos Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 20 / 28
  • 101. Classes em Java Classes diferentes podem inclusive ter m´etodos e atributos homˆonimos class AreaCasa { } class AreaPiscina { } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 20 / 28
  • 102. Classes em Java Classes diferentes podem inclusive ter m´etodos e atributos homˆonimos class AreaCasa { static void area(float lateral, float cquarto) ... } class AreaPiscina { static double area(double raio) ... } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 20 / 28
  • 103. Classes em Java Classes diferentes podem inclusive ter m´etodos e atributos homˆonimos class AreaCasa { static void area(float lateral, float cquarto) ... static double valor(double area) ... } class AreaPiscina { static double area(double raio) ... static double valor(double area, int material) ... } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 20 / 28
  • 104. Classes em Java Classes diferentes podem inclusive ter m´etodos e atributos homˆonimos class AreaCasa { static void area(float lateral, float cquarto) ... static double valor(double area) ... public static void main(String[] args) ... } class AreaPiscina { static double area(double raio) ... static double valor(double area, int material) ... public static void main(String[] args) ... } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 20 / 28
  • 105. Classes em Java Classes diferentes podem inclusive ter m´etodos e atributos homˆonimos class AreaCasa { static void area(float lateral, float cquarto) ... static double valor(double area) ... public static void main(String[] args) ... } class AreaPiscina { static double area(double raio) ... static double valor(double area, int material) ... public static void main(String[] args) ... } A diferen¸ca se d´a em que area de AreaCasa tem significado diferente de area de AreaPiscina Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 20 / 28
  • 106. Classes em Java E como usamos essas classes? Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 21 / 28
  • 107. Classes em Java E como usamos essas classes? Fa¸camos antes uma mudan¸ca em AreaCasa: class AreaCasa { static double valorM2 = 1500; static double area(double lateral, double cquarto){ double areat=-1; if (lateral>=0 && cquarto>=0) { areat = lateral*lateral; areat += cquarto*lateral; } return(areat); } static double valor(double area) { if (area >= 0) return(valorM2*area); return(-1); } } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 21 / 28
  • 108. Classes em Java E como usamos essas classes? Fa¸camos antes uma mudan¸ca em AreaCasa: Fa¸camos retornar a ´area class AreaCasa { static double valorM2 = 1500; static double area(double lateral, double cquarto){ double areat=-1; if (lateral>=0 && cquarto>=0) { areat = lateral*lateral; areat += cquarto*lateral; } return(areat); } static double valor(double area) { if (area >= 0) return(valorM2*area); return(-1); } } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 21 / 28
  • 109. Classes em Java Considere agora uma classe para cria¸c˜ao de um projeto arquitetˆonico: Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 22 / 28
  • 110. Classes em Java Considere agora uma classe para cria¸c˜ao de um projeto arquitetˆonico: class Projeto { /* Calcula a ´area de uma casa com piscina */ static double area(double lateral, double cquarto, double raio) { return(AreaCasa.area(lateral,cquarto) + AreaPiscina.area(raio)); } public static void main(String[] args) { System.out.println(area(15,10,4.2)); } } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 22 / 28
  • 111. Classes em Java Considere agora uma classe para cria¸c˜ao de um projeto arquitetˆonico: Note que ela usa m´etodos definidos class Projeto { /* Calcula a ´area de uma casa com piscina */ static double area(double lateral, double cquarto, double raio) { return(AreaCasa.area(lateral,cquarto) + AreaPiscina.area(raio)); } public static void main(String[] args) { System.out.println(area(15,10,4.2)); } } em outras classes (outros arquivos) Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 22 / 28
  • 112. Classes em Java Considere agora uma classe para cria¸c˜ao de um projeto arquitetˆonico: Note que ela usa m´etodos definidos class Projeto { /* Calcula a ´area de uma casa com piscina */ static double area(double lateral, double cquarto, double raio) { return(AreaCasa.area(lateral,cquarto) + AreaPiscina.area(raio)); } public static void main(String[] args) { System.out.println(area(15,10,4.2)); } } em outras classes (outros arquivos) Em java podemos chamar m´etodos de outras classes de dentro de uma classe Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 22 / 28
  • 113. Classes em Java O que acontece na mem´oria quando executamos esse c´odigo? class Projeto { static double area(double lateral, double cquarto, double raio) { return(AreaCasa.area(lateral,cquarto) + AreaPiscina.area(raio)); } public static void main(String[] args) { System.out.println(area(15,10,4.2)); } } Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 23 / 28
  • 114. Classes em Java Espa¸co ´e reservado para as vari´aveis locais e parˆametros de area class Projeto { static double area(double lateral, double cquarto, double raio) { return(AreaCasa.area(lateral,cquarto) + AreaPiscina.area(raio)); } public static void main(String[] args) { System.out.println(area(15,10,4.2)); } } Projeto main args 0x23f area lateral 0x28f cquarto 0xf8f raio 0x885 Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 24 / 28
  • 115. Classes em Java Espa¸co ´e reservado para as vari´aveis locais e parˆametros de area Os valores dos parˆametros s˜ao copiados para l´a class Projeto { static double area(double lateral, double cquarto, double raio) { return(AreaCasa.area(lateral,cquarto) + AreaPiscina.area(raio)); } public static void main(String[] args) { System.out.println(area(15,10,4.2)); } } Projeto main args 0x23f area lateral 0x28f 15 cquarto 0xf8f 10 raio 0x885 4.2 Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 24 / 28
  • 116. Classes em Java Ao chamar AreaCasa.area, espa¸co ´e reservado class Projeto { static double area(double lateral, double cquarto, double raio) { return(AreaCasa.area(lateral,cquarto) + AreaPiscina.area(raio)); } public static void main(String[] args) { System.out.println(area(15,10,4.2)); } } Projeto main args 0x23f area lateral 0x28f 15 cquarto 0xf8f 10 raio 0x885 4.2 AreaCasa valorM2 0xf05 1500 area lateral 0xfff cquarto 0xfaf areat 0x005 Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 25 / 28
  • 117. Classes em Java Ao chamar AreaCasa.area, espa¸co ´e reservado Inclusive para atributos da classe → podem ser ´uteis para algum m´etodo dela class Projeto { static double area(double lateral, double cquarto, double raio) { return(AreaCasa.area(lateral,cquarto) + AreaPiscina.area(raio)); } public static void main(String[] args) { System.out.println(area(15,10,4.2)); } } Projeto main args 0x23f area lateral 0x28f 15 cquarto 0xf8f 10 raio 0x885 4.2 AreaCasa valorM2 0xf05 1500 area lateral 0xfff cquarto 0xfaf areat 0x005 Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 25 / 28
  • 118. Classes em Java Ao chamar AreaCasa.area, espa¸co ´e reservado Inclusive para atributos da classe → podem ser ´uteis para algum m´etodo dela Os valores s˜ao armazenados nos parˆametros class Projeto { static double area(double lateral, double cquarto, double raio) { return(AreaCasa.area(lateral,cquarto) + AreaPiscina.area(raio)); } public static void main(String[] args) { System.out.println(area(15,10,4.2)); } } Projeto main args 0x23f area lateral 0x28f 15 cquarto 0xf8f 10 raio 0x885 4.2 AreaCasa valorM2 0xf05 1500 area lateral 0xfff 15 cquarto 0xfaf 10 areat 0x005 Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 25 / 28
  • 119. Classes em Java Ao chamar AreaCasa.area, espa¸co ´e reservado Inclusive para atributos da classe → podem ser ´uteis para algum m´etodo dela Os valores s˜ao armazenados nos parˆametros O c´alculo da ´area ´e feito class Projeto { static double area(double lateral, double cquarto, double raio) { return(AreaCasa.area(lateral,cquarto) + AreaPiscina.area(raio)); } public static void main(String[] args) { System.out.println(area(15,10,4.2)); } } Projeto main args 0x23f area lateral 0x28f 15 cquarto 0xf8f 10 raio 0x885 4.2 AreaCasa valorM2 0xf05 1500 area lateral 0xfff 15 cquarto 0xfaf 10 areat 0x005 375 Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 25 / 28
  • 120. Classes em Java O mesmo acontece com AreaPiscina.area class Projeto { static double area(double lateral, double cquarto, double raio) { return(AreaCasa.area(lateral,cquarto) + AreaPiscina.area(raio)); } public static void main(String[] args) { System.out.println(area(15,10,4.2)); } } Projeto main args 0x23f area lateral 0x28f 15 cquarto 0xf8f 10 raio 0x885 4.2 AreaCasa valorM2 0xf05 1500 AreaPiscina area raio 0xaaf VINIL 0xbbb 1 0xcab 1500 1100 750 500 precos 0xaa5 0xcab . . . Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 26 / 28
  • 121. Classes em Java O mesmo acontece com AreaPiscina.area class Projeto { static double area(double lateral, double cquarto, double raio) { return(AreaCasa.area(lateral,cquarto) + AreaPiscina.area(raio)); } public static void main(String[] args) { System.out.println(area(15,10,4.2)); } } Projeto main args 0x23f area lateral 0x28f 15 cquarto 0xf8f 10 raio 0x885 4.2 AreaCasa valorM2 0xf05 1500 AreaPiscina area raio 0xaaf 4.2 VINIL 0xbbb 1 0xcab 1500 1100 750 500 precos 0xaa5 0xcab . . . Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 26 / 28
  • 122. Referˆencias http: //www.cs.aau.dk/~normark/prog3-03/html/notes/ paradigms_themes-paradigm-overview-section.html Brookshear, J.G.: Computer Science: An Overview. 9ed. Addison-Wesley:New York. 2007. Reynolds, C.; Tymann, P.: Principles of Computer Science. 1ed. McGraw-Hill:New York. 2008. Goldman, A.; Kon, F.; Silva, P.J.S.: Introdu¸c˜ao `a Ciˆencia da Computa¸c˜ao com Java e Orienta¸c˜ao a Objetos. 1ed. IME-USP:S˜ao Paulo. 2006. Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 27 / 28
  • 123. Videoaula https://www.youtube.com/watch?v=RMIrqhSivso (cobre parcialmente o conte´udo) Norton Trevisan Roman Aula 13 – Paradigmas de Programa¸c˜ao e Orienta¸c˜ao a Objetos7 de abril de 2020 28 / 28