O documento apresenta uma introdução sobre lógica de programação ministrada por Ricardo Terra. Ele inclui seções sobre arquitetura de sistemas de computadores, histórico da computação, utilização de computadores e lógica proposicional.
Este documento apresenta uma webquest sobre geometria com o objetivo de medir indiretamente a altura de objetos inacessíveis utilizando o Teorema de Tales e propriedades de triângulos semelhantes. Os alunos deverão pesquisar sobre esses tópicos, executar um exercício prático de medição indireta e publicar a solução no blog do professor.
O documento discute estratégias para resolver problemas através da computação, incluindo definir problemas matematicamente e em múltiplas etapas. Propõe que os alunos aprendam a aplicar algoritmos existentes e criar novos algoritmos para problemas complexos, enfatizando o processo em vez da solução.
O documento discute como a indução e a recursão podem ajudar no desenvolvimento de algoritmos. Primeiramente, explica-se que a prova por indução matemática é, por si só, um algoritmo recursivo. Em seguida, utiliza-se o exemplo do cálculo fatorial para ilustrar como a indução finita pode levar à construção de um algoritmo recursivo, definindo a base, hipótese de indução e passo recursivo.
ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASE...João Henrique Berssanette
A dissertação propõe uma abordagem prática para o ensino de programação de computadores baseada na teoria de aprendizagem significativa de Ausubel, enfatizando a interação dos alunos com a máquina desde o início. O autor descreve a abordagem tradicional versus a proposta e aplica esta última em duas disciplinas, obtendo resultados positivos como maior engajamento dos alunos e melhor desempenho.
O documento discute inferência em lógica proposicional, incluindo tipos de provas como verificação de modelos e aplicação de regras de inferência. Ele explica como aplicar regras de inferência como modus ponens e modus tollens para derivar novas sentenças a partir de premissas, formando uma prova.
O documento discute técnicas de inferência como dedução, indução e abdução e como elas se relacionam com o desenvolvimento de algoritmos. Explica que a indução finita pode ser usada para provar conjecturas sobre a correção de algoritmos de forma dedutiva, ao invés do raciocínio indutivo incerto.
O documento apresenta uma introdução sobre lógica de programação ministrada por Ricardo Terra. Ele inclui seções sobre arquitetura de sistemas de computadores, histórico da computação, utilização de computadores e lógica proposicional.
Este documento apresenta uma webquest sobre geometria com o objetivo de medir indiretamente a altura de objetos inacessíveis utilizando o Teorema de Tales e propriedades de triângulos semelhantes. Os alunos deverão pesquisar sobre esses tópicos, executar um exercício prático de medição indireta e publicar a solução no blog do professor.
O documento discute estratégias para resolver problemas através da computação, incluindo definir problemas matematicamente e em múltiplas etapas. Propõe que os alunos aprendam a aplicar algoritmos existentes e criar novos algoritmos para problemas complexos, enfatizando o processo em vez da solução.
O documento discute como a indução e a recursão podem ajudar no desenvolvimento de algoritmos. Primeiramente, explica-se que a prova por indução matemática é, por si só, um algoritmo recursivo. Em seguida, utiliza-se o exemplo do cálculo fatorial para ilustrar como a indução finita pode levar à construção de um algoritmo recursivo, definindo a base, hipótese de indução e passo recursivo.
ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASE...João Henrique Berssanette
A dissertação propõe uma abordagem prática para o ensino de programação de computadores baseada na teoria de aprendizagem significativa de Ausubel, enfatizando a interação dos alunos com a máquina desde o início. O autor descreve a abordagem tradicional versus a proposta e aplica esta última em duas disciplinas, obtendo resultados positivos como maior engajamento dos alunos e melhor desempenho.
O documento discute inferência em lógica proposicional, incluindo tipos de provas como verificação de modelos e aplicação de regras de inferência. Ele explica como aplicar regras de inferência como modus ponens e modus tollens para derivar novas sentenças a partir de premissas, formando uma prova.
O documento discute técnicas de inferência como dedução, indução e abdução e como elas se relacionam com o desenvolvimento de algoritmos. Explica que a indução finita pode ser usada para provar conjecturas sobre a correção de algoritmos de forma dedutiva, ao invés do raciocínio indutivo incerto.
O documento apresenta o plano de ensino para a disciplina de Computação e Algoritmos I ministrada pelo professor Anderson Favaro. Ele inclui informações sobre o professor, o calendário acadêmico, as aulas, as datas de provas e entrega de trabalhos, a grade curricular, as avaliações, os objetivos, a ementa, o conteúdo programático e a bibliografia básica.
A apresentação da disciplina de algoritmos inclui seus objetivos de apresentar noções de complexidade assintótica, técnicas de desenvolvimento de algoritmos e algoritmos de ordenação. O conteúdo abrange técnicas de algoritmos, análise assintótica, algoritmos de ordenação quadráticos e log-lineares e estruturas de dados como heaps e hashs. As regras incluem duas entregas de trabalhos práticos, uma prova fechada e cálculo da média final com aprovação a partir de 5.0.
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...Manuel Menezes de Sequeira
Fundamentos da Programação 2:
• Programação como arte de resolução de problemas
• Algoritmos
• Descrição de algoritmos em… Snap!
Apresentação 2 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
Parte 1 do material sobre UML, contendo:
- introdução a Orientação a Objetos
- visão geral do processo de software OO
- histórico da UML
- diagramas de casos de uso
- diagramas de classes
1) O documento discute estratégias para resolver problemas matemáticos, incluindo compreender o problema, estabelecer um plano de solução, e executar e verificar o plano.
2) Várias heurísticas são apresentadas, como desenhar diagramas, examinar casos particulares, e considerar problemas relacionados ou modificações do problema original.
3) Diferentes tipos de problemas são definidos, como exercícios de reconhecimento, problemas algorítmicos, e situações-problema.
O documento apresenta o roteiro de uma aula inaugural de um curso de Programação Imperativa. Resume os principais tópicos como o docente, horário das aulas, frequência, plano de ensino, avaliação e bibliografia.
O documento discute os padrões de projeto Observer, Decorator e MVC. O documento apresenta o palestrante Emanoel Tadeu e sua experiência, e então fornece detalhes sobre os padrões Observer, Decorator e MVC, incluindo exemplos de implementação.
O documento fornece uma introdução aos conceitos básicos de programação orientada a objetos em ABAP, incluindo classes, objetos, herança, interfaces e eventos. Explica como esses conceitos são implementados na linguagem ABAP e fornece exemplos para ilustrar seus usos.
O documento descreve o modelo incremental para projetar algoritmos de ordenação por indução fraca. Ele apresenta o padrão geral seguido por algoritmos incrementais, que ordenam incrementalmente subconjuntos de tamanho crescente dos dados de entrada. Como exemplo, é descrito o algoritmo de inserção, que ordena um conjunto de tamanho n inserindo recursivamente o elemento restante em um conjunto já ordenado de tamanho n-1.
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...tdc-globalcode
O documento apresenta dicas para melhorar o desempenho de aplicações Java, como usar tipos primitivos, declarar métodos de forma estática quando possível e evitar algoritmos complexos. Também fornece recomendações sobre ferramentas de monitoramento como Java VisualVM para analisar uso da CPU, memória e threads.
O documento discute estimativas de erro em modelos de aprendizagem de máquina. Explica que o erro esperado no conjunto de teste tende a ser maior que no conjunto de treino, devido ao ajuste do modelo aos dados de treino. Também aborda medidas como viés e variância para avaliar estimadores, e como o erro quadrático médio equilibra ambos para medir o desvio total esperado entre a estimativa e o valor real.
O documento discute a avaliação de desempenho de classificadores treinados. Explica que é necessário testar o modelo em um conjunto de dados independente para medir seu desempenho em dados novos. Também apresenta métricas como taxa de erro e curva de aprendizagem para avaliar quantitativamente o modelo.
O documento descreve o algoritmo de máquina de vetor de suporte (SVM), explicando como ele busca encontrar o hiperplano separador de margem máxima entre os dados de treinamento de duas classes. O SVM define fronteiras lineares ótimas para dados linearmente separáveis, maximizando a distância entre o hiperplano separador e os exemplos de treinamento mais próximos, chamados de vetores de suporte. O problema é formulado como um problema de otimização para encontrar os parâmetros ω e b que maximizam essa distância de separação.
O documento descreve as redes neurais e o perceptron. Ele explica que as redes neurais se inspiram nos neurônios biológicos e como o perceptron funciona como a unidade básica de uma rede neural, recebendo sinais de entrada e aplicando uma função de ativação. Também discute possíveis funções de ativação como a função degrau e sigmóide e como os pesos das conexões, incluindo o viés, determinam se um perceptron é ativado ou não.
O documento discute árvores de decisão e florestas aleatórias. Ele explica que árvores de decisão são uma das formas mais simples de aprendizado de máquina, representando uma sequência de regras "se...então" para classificar ou prever saídas com base em atributos de entrada. O documento também descreve características como nós internos representando testes de atributos e folhas especificando saídas, e discute expressividade e variações de árvores de decisão.
O documento discute aprendizado supervisionado bayesiano. Ele introduz o aprendizado bayesiano como um método probabilístico e descreve que o aprendizado supervisionado tem como objetivo classificação ou regressão para mapear entradas em saídas com base em exemplos.
O documento descreve a regra de Bayes e redes Bayesianas. Ele fornece um exemplo detalhado sobre como calcular a probabilidade de uma mulher ter câncer de mama dado um resultado positivo em um mamograma usando a regra de Bayes. Ele também define brevemente o que são redes Bayesianas, que representam dependências probabilísticas entre variáveis aleatórias através de um grafo direcionado acíclico.
O documento discute o tratamento de incerteza em inteligência artificial. Aborda como a probabilidade e a teoria da decisão podem ser usadas para tomar decisões racionais quando os resultados são incertos, levando em conta a probabilidade de cada resultado e sua utilidade segundo as preferências de quem decide.
Mais conteúdo relacionado
Semelhante a (ACH2001) Introdução à Programação - Aula 13
O documento apresenta o plano de ensino para a disciplina de Computação e Algoritmos I ministrada pelo professor Anderson Favaro. Ele inclui informações sobre o professor, o calendário acadêmico, as aulas, as datas de provas e entrega de trabalhos, a grade curricular, as avaliações, os objetivos, a ementa, o conteúdo programático e a bibliografia básica.
A apresentação da disciplina de algoritmos inclui seus objetivos de apresentar noções de complexidade assintótica, técnicas de desenvolvimento de algoritmos e algoritmos de ordenação. O conteúdo abrange técnicas de algoritmos, análise assintótica, algoritmos de ordenação quadráticos e log-lineares e estruturas de dados como heaps e hashs. As regras incluem duas entregas de trabalhos práticos, uma prova fechada e cálculo da média final com aprovação a partir de 5.0.
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...Manuel Menezes de Sequeira
Fundamentos da Programação 2:
• Programação como arte de resolução de problemas
• Algoritmos
• Descrição de algoritmos em… Snap!
Apresentação 2 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
Parte 1 do material sobre UML, contendo:
- introdução a Orientação a Objetos
- visão geral do processo de software OO
- histórico da UML
- diagramas de casos de uso
- diagramas de classes
1) O documento discute estratégias para resolver problemas matemáticos, incluindo compreender o problema, estabelecer um plano de solução, e executar e verificar o plano.
2) Várias heurísticas são apresentadas, como desenhar diagramas, examinar casos particulares, e considerar problemas relacionados ou modificações do problema original.
3) Diferentes tipos de problemas são definidos, como exercícios de reconhecimento, problemas algorítmicos, e situações-problema.
O documento apresenta o roteiro de uma aula inaugural de um curso de Programação Imperativa. Resume os principais tópicos como o docente, horário das aulas, frequência, plano de ensino, avaliação e bibliografia.
O documento discute os padrões de projeto Observer, Decorator e MVC. O documento apresenta o palestrante Emanoel Tadeu e sua experiência, e então fornece detalhes sobre os padrões Observer, Decorator e MVC, incluindo exemplos de implementação.
O documento fornece uma introdução aos conceitos básicos de programação orientada a objetos em ABAP, incluindo classes, objetos, herança, interfaces e eventos. Explica como esses conceitos são implementados na linguagem ABAP e fornece exemplos para ilustrar seus usos.
O documento descreve o modelo incremental para projetar algoritmos de ordenação por indução fraca. Ele apresenta o padrão geral seguido por algoritmos incrementais, que ordenam incrementalmente subconjuntos de tamanho crescente dos dados de entrada. Como exemplo, é descrito o algoritmo de inserção, que ordena um conjunto de tamanho n inserindo recursivamente o elemento restante em um conjunto já ordenado de tamanho n-1.
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...tdc-globalcode
O documento apresenta dicas para melhorar o desempenho de aplicações Java, como usar tipos primitivos, declarar métodos de forma estática quando possível e evitar algoritmos complexos. Também fornece recomendações sobre ferramentas de monitoramento como Java VisualVM para analisar uso da CPU, memória e threads.
Semelhante a (ACH2001) Introdução à Programação - Aula 13 (12)
O documento discute estimativas de erro em modelos de aprendizagem de máquina. Explica que o erro esperado no conjunto de teste tende a ser maior que no conjunto de treino, devido ao ajuste do modelo aos dados de treino. Também aborda medidas como viés e variância para avaliar estimadores, e como o erro quadrático médio equilibra ambos para medir o desvio total esperado entre a estimativa e o valor real.
O documento discute a avaliação de desempenho de classificadores treinados. Explica que é necessário testar o modelo em um conjunto de dados independente para medir seu desempenho em dados novos. Também apresenta métricas como taxa de erro e curva de aprendizagem para avaliar quantitativamente o modelo.
O documento descreve o algoritmo de máquina de vetor de suporte (SVM), explicando como ele busca encontrar o hiperplano separador de margem máxima entre os dados de treinamento de duas classes. O SVM define fronteiras lineares ótimas para dados linearmente separáveis, maximizando a distância entre o hiperplano separador e os exemplos de treinamento mais próximos, chamados de vetores de suporte. O problema é formulado como um problema de otimização para encontrar os parâmetros ω e b que maximizam essa distância de separação.
O documento descreve as redes neurais e o perceptron. Ele explica que as redes neurais se inspiram nos neurônios biológicos e como o perceptron funciona como a unidade básica de uma rede neural, recebendo sinais de entrada e aplicando uma função de ativação. Também discute possíveis funções de ativação como a função degrau e sigmóide e como os pesos das conexões, incluindo o viés, determinam se um perceptron é ativado ou não.
O documento discute árvores de decisão e florestas aleatórias. Ele explica que árvores de decisão são uma das formas mais simples de aprendizado de máquina, representando uma sequência de regras "se...então" para classificar ou prever saídas com base em atributos de entrada. O documento também descreve características como nós internos representando testes de atributos e folhas especificando saídas, e discute expressividade e variações de árvores de decisão.
O documento discute aprendizado supervisionado bayesiano. Ele introduz o aprendizado bayesiano como um método probabilístico e descreve que o aprendizado supervisionado tem como objetivo classificação ou regressão para mapear entradas em saídas com base em exemplos.
O documento descreve a regra de Bayes e redes Bayesianas. Ele fornece um exemplo detalhado sobre como calcular a probabilidade de uma mulher ter câncer de mama dado um resultado positivo em um mamograma usando a regra de Bayes. Ele também define brevemente o que são redes Bayesianas, que representam dependências probabilísticas entre variáveis aleatórias através de um grafo direcionado acíclico.
O documento discute o tratamento de incerteza em inteligência artificial. Aborda como a probabilidade e a teoria da decisão podem ser usadas para tomar decisões racionais quando os resultados são incertos, levando em conta a probabilidade de cada resultado e sua utilidade segundo as preferências de quem decide.
O documento discute representação do conhecimento através de ontologias, incluindo taxonomias e herança. Ontologias organizam o conhecimento em categorias hierárquicas e permitem raciocinar sobre objetos classificados. Categorias podem ser representadas como predicados ou objetos. A herança permite que propriedades sejam herdadas por subcategorias.
O documento descreve o funcionamento do algoritmo de backward chaining em programação lógica, começando com uma explicação geral do processo de raciocínio de trás para frente a partir de um objetivo. Em seguida, apresenta formalmente o algoritmo de backward chaining, explicando cada parte do processo de forma recursiva para encontrar substituições que satisfaçam a query dada uma base de conhecimento. Por fim, exemplifica o algoritmo em uma base de conhecimento sobre venda de armas.
O documento descreve os passos para executar resolução e encadeamento para frente em lógica de primeira ordem. Primeiro, as expressões lógicas devem ser convertidas para forma clausal sem quantificadores. Em seguida, as variáveis devem ser substituídas durante a resolução usando o processo de unificação. Por fim, a resolução é executada para derivar novas conclusões.
O documento descreve as bases de dados em lógica de primeira ordem, como interagir com elas fazendo buscas (queries) por meio de sentenças lógicas em LPO, e como qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente. As bases de dados contêm axiomas com informações básicas e teoremas derivados dos axiomas, e o documento discute técnicas como forward chaining, backward chaining e resolução para realizar inferência nas bases de dados.
O documento descreve uma aula sobre lógica de primeira ordem. Apresenta os elementos básicos da lógica de primeira ordem, incluindo termos, predicados e a gramática formal para construir sentenças. Também explica como modelos e interpretações funcionam na lógica de primeira ordem, diferentemente da lógica proposicional.
O documento descreve um algoritmo de busca retroativa para resolver problemas de satisfação de restrições, utilizando forward checking e heurísticas como valores restantes mínimos, grau e valor menos restritivo. O algoritmo é demonstrado passo a passo em um exemplo de coloração de grafos, definindo variáveis, valores e propagando escolhas.
O documento descreve problemas de satisfação de restrições (CSPs), definidos por um conjunto de variáveis, domínios de valores para cada variável, e restrições sobre combinações de valores de variáveis. Apresenta exemplos de agendamento de aulas e coloração de mapas como CSPs, definindo suas variáveis, domínios e restrições.
O documento discute algoritmos genéticos e representação de cromossomos. Ele explica que os cromossomos podem ser representados de várias formas, incluindo binária, valores inteiros e reais. A representação binária é a mais simples, onde o cromossomo consiste de uma sequência de bits. A mutação e o cruzamento ocorrem durante o algoritmo genético para gerar novas soluções.
O documento descreve os princípios da computação evolutiva e algoritmos genéticos. Ele define computação evolutiva como técnicas que simulam a evolução natural, usando seleção, mutação e reprodução. O documento então explica o processo de seleção, mutação e reprodução em algoritmos genéticos e fornece detalhes sobre sua terminologia e funcionamento.
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, Betel, Ordenança para exercer a fé, 2Tr24, Pr Henrique, EBD NA TV, 2° TRIMESTRE DE 2024, ADULTOS, EDITORA BETEL, TEMA, ORDENANÇAS BÍBLICAS, Doutrina Fundamentais Imperativas aos Cristãos para uma vida bem-sucedida e de Comunhão com DEUS, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Comentários, Bispo Abner Ferreira, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, Central Gospel, Os Mortos Em Cristo, 1Tr24, Pr Henrique, EBD NA TV, Revista ano 11, nº 1, Revista Estudo Bíblico Jovens E Adultos, Central Gospel, 2º Trimestre de 2024, Professor, Tema, Os Grandes Temas Do Fim, Comentarista, Pr. Joá Caitano, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
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
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
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