SlideShare uma empresa Scribd logo
1 de 123
Baixar para ler offline
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

Aula Inaugural - Programação Imperativa
Aula Inaugural - Programação ImperativaAula Inaugural - Programação Imperativa
Aula Inaugural - Programação Imperativa
Ivna Valença
 

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

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

Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
edelon1
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
azulassessoria9
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
azulassessoria9
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
azulassessoria9
 

Último (20)

Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 

(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