Programação Orientada a Objetos – (POO0001)
JAVA
Alexandre Mendonça Fava
[email protected] Universidade do Estado de Santa Catarina – UDESC
Programa de Pós-graduação em Computação Aplicada – PPGCA
Programação Orientada a Objetos – (POO0001)
JAVA
Alexandre Mendonça Fava
[email protected] Universidade do Estado de Santa Catarina – UDESC
Programa de Pós-graduação em Computação Aplicada – PPGCA
Programação Orientada a Objetos – (POO0001)
JAVA
Alexandre Mendonça Fava
[email protected] Universidade do Estado de Santa Catarina – UDESC
Programa de Pós-graduação em Computação Aplicada – PPGCA
Programação Orientada a Objetos – (POO0001)
JAVA
Alexandre Mendonça Fava
[email protected] Universidade do Estado de Santa Catarina – UDESC
Programa de Pós-graduação em Computação Aplicada – PPGCA
Roteiro
❑ Por que Java?
❑ Paradigmas de Programação
❑ Orientado a Objetos
❑ Imperativa
❑ Funcional
❑ Genérica Hora, hora, hora...
❑ WORA Já vamos começar então.
❑ Configuração
❑ Resumo
❑ Referências Duke, o Mascote do Java
Centro de Ciências Tecnológicas 5/76
Por que Java?
6/76
Por que Java?
7/76
Por que Java?
8/76
Por que Java?
DEITEL, Paul. Java: como programar.
9/76
Por que Java?
https://www.tiobe.com/tiobe-index/
10/76
Por que Java?
https://stackshare.io/java https://stackshare.io/java
11/76
Por que Java?
https://trends.google.com.br/trends
12/76
Por que Java?
SCHILDT, Herbert. Java para iniciantes.
DEITEL, Paul. Java: como programar.
13/76
Por que Java?
SCHILDT, Herbert. Java para iniciantes.
DEITEL, Paul. Java: como programar.
14/76
Por que Java?
Aula de POO
em C++
Muahaha...
Vou fazer tudo
como em C.
15/76
Por que Java?
Aula de POO
em C++
https://pt.wikipedia.org/wiki/C++
Muahaha...
Vou fazer tudo
como em C.
16/76
Por que Java?
Aula de POO
em Java
https://pt.wikipedia.org/wiki/Java_(linguagem_de_programação)
17/76
Paradigma
18/76
Paradigma
A parábola dos
macacos
19/76
Paradigma
Passando giz no taco de
A parábola dos sinuca sem saber o motivo
macacos
20/76
Paradigma
SILVA, Fabricio; LEITE, Márcia; OLIVEIRA, Diego. Paradigmas de Programação.
É um modelo, um padrão
para a solução de problemas
21/76
Paradigma
Todas as linguagens de programação
querem resolver um problema,
logo
todas as linguagens de programação estão
construídas sobre um paradigma.
22/76
Paradigma
Paradigma
(de programação)
Linguagem
(de programação)
É um modelo, um padrão É o vocabulário utilizado
para a solução de problemas para a solução de problemas
23/76
Paradigma
Paradigma
(de programação)
Linguagem
(de programação)
É um modelo, um padrão É o vocabulário utilizado
para a solução de problemas para a solução de problemas
Imperativo
Funcional Genérico
Orientado a Objetos 24/76
Paradigma
Paradigma
(de idioma)
Linguagem
(de idioma)
É um modelo, um padrão É o vocabulário utilizado
para a solução de problemas para a solução de problemas
Fala Português Espanhol
Sinais Tátil LIBRAS BRAILLE
Escrita 漢字 カタカナ25/76
Paradigma
26/76
Paradigma: Imperativo
Exemplo
Ei máquina: Humanos e
faça isso, suas formas
depois isso, imperativas
depois aquilo. de dar ordens.
27/76
Paradigma: Imperativo
Código
1 #include <stdio.h>
2
3 int main() {
4 int i;
5 int lista[9] = {1,2,3,4,5,6,7,8,9};
6 printf("Numeros pares de 1 a 9: ");
7 for(i = 0; i < 9; i++){
8 if(lista[i] % 2 == 0){
9 printf("%d ", lista[i]);
10 }
11 }
12 return 0;
13 }
14 28/76
Paradigma: Funcional
Funções são a base da Uma função pode receber outras
programação funcional funções como argumento
29/76
Paradigma: Funcional
Exemplo
Humanos e
Ei máquina: suas formas
𝑦 matemáticas
λ x : x + x → x[ ].
2
de dar ordens.
30/76
Paradigma: Funcional
Código
1 verificandoPar :: [Integer] -> [Integer]
2 verificandoPar lista = [n | n <- lista, even n]
3
4 main :: IO ()
5 main = do
6 let lista = [1..9]
7 putStr $ "Numeros pares de 1 a 9: "
8 print (verificandoPar lista)
9
10
11
12
13
14 31/76
Paradigma: Genérico
O tipo dos dados de entrada são Linguagens de tipagem dinâmicas
irrelevantes para a solução meio que já fazem isso
A linguagem de programação C++ usa template como um tipo
genérico (ou seja, ele poder ser: int, float, char, bool, etc...)
32/76
Paradigma: Genérico
Exemplo
Ei máquina: Humanos e
faça isso, não suas formas
importa a entrada, genéricas de
dá teu jeito. dar ordens.
33/76
11 }
Paradigma: Genérico
12
13
}
return pares;
14 }
15 Código
16 int main() {
17 list<int> numeros = {1, 2, 3, 4, 5, 6, 7, 8, 9};
18 list<int> pares = filtrarPares(numeros);
19
20 cout << "Numeros pares de 1 a 9: ";
21 for (int numero : pares) {
22 cout << numero << " ";
23 }
24 cout << endl;
25
26 return 0;
27 }
28
34/76
Paradigma: Genérico
Código
1 #include <iostream>
2 #include <list
3
4 using namespace std;
5 template <typename T>
6 list<T> filtrarPares(list<T> lista){
7 list<T> pares;
8 for (T numero : lista){
9 if (numero % 2 == 0){
10 pares.push_back(numero);
11 }
12 }
13 return pares;
14 } 35/76
Paradigma: Orientado a Objetos
Tudo é um objeto, e todo objeto é Os objetos podem interagir uns
constituído de atributos e métodos com os outros
36/76
Paradigma: Orientado a Objetos
Exemplo
Ei máquina: Humanos e
faça isso, com base suas formas de
naquilo e com um reaproveitar
pouco disso. ordens.
37/76
Paradigma: Orientado a Objetos
Exemplo
Ei máquina: Humanos e
faça isso, com base suas formas de
naquilo e com um reaproveitar
pouco disso. ordens.
DEITEL, Paul. Java: como programar.
38/76
Paradigma: Orientado a Objetos
Polimorfismo Herança Composição Encapsulamento
39/76
Paradigma: Orientado a Objetos
Polimorfismo Herança Composição Encapsulamento
Abstração 40/76
Paradigma: Orientado a Objetos
Código (Main.java)
1 import java.util.ArrayList;
2 import java.util.List;
3
4 public class Main {
5 public static void main(String[] args) {
6 List<Integer> numeros = new ArrayList<>();
7 for (int i = 1; i <= 9; i++) {
8 numeros.add(i);
9 }
10 Lista lista = new Lista(numeros);
11 lista.imprimirNumerosPares();
12 }
13 }
14 41/76
Paradigma: Orientado a Objetos
Código (Lista.java)
1 public class Lista{
2 private List<Integer> numeros;
3 public Lista(List<Integer> numeros){
4 this.numeros = numeros;
5 }
6 public void imprimirNumerosPares(){
7 System.out.print("Numeros pares de 1 a 9: ");
8 for(Integer numero : numeros){
9 if (numero % 2 == 0){
10 System.out.print(numero + " ");
11 }
12 }
13 }
14 } 42/76
Paradigmas de Programação
Define uma sequência de passos
Imperativo para a solução de um problema
Define objetos em termos de
Orientação atributos e métodos
a Objetos
Define uma função matemática
Funcional
para a solução de um problema
Define tipos de dados genéricos
Genérico que independem da entrada
43/76
Paradigmas de Programação
Define uma sequência de passos
Imperativo para a solução de um problema
Define objetos em termos de
Orientação atributos e métodos
a Objetos
Define uma função matemática
Funcional
para a solução de um problema
Define tipos de dados genéricos
Genérico que independem da entrada
44/76
Paradigmas de Programação
Funcional Orientação a
Imperativo
Objetos
Classes & Objetos
Sequência de Passos Funções
Desenvolvimento
Variáveis Mutáveis Dados Imutáveis Herança &
Polimorfismo
Estruturas de Funções Compostas
Encapsulamento
Controle 45/76
Paradigmas de Programação
Estruturas de
Controle
Funções Compostas
Encapsulamento
Execução em
Instanciação de
Sequência
Objetos
Funções Validadas
Execução
Troca de Variáveis
Mudanças de Estado
Execução em Execução Paralela Controle de Herança
Nível de Máquina
46/76
WORA
47/76
Write Once, Run Anywhere
48/76
Escreva uma vez, execute em qualquer lugar
49/76
Execução
50/76
Execução
51/76
Execução
52/76
Execução
53/76
Execução
Compilação Execução
Executável
0100010110
1110111110
1110111001
1101100001
0000111011
Código Fonte
Executável
0100010110
1110111110
1110111001
1101100001
0000111011
54/76
Execução
Compilação Execução javac Execução
Executável
0100010110
1110111110
1110111001
1101100001
0000111011
java.class
Código Fonte bytecode
Executável
Código Fonte
0100010110
1110111110
1110111001
1101100001
0000111011
55/76
Execução
DEITEL, Paul.
Compilação Java: como javac
Execução programar. Execução
Executável
0100010110
1110111110
1110111001
1101100001
0000111011
java.class
Código Fonte bytecode
Executável
Código Fonte
0100010110
1110111110
1110111001
1101100001
DEITEL, Paul. Java: como programar.
0000111011
56/76
Execução
Compilação Execução javac Execução
Executável
0100010110
1110111110
1110111001
1101100001
0000111011
java.class
Código Fonte bytecode
Executável
Código Fonte
0100010110
1110111110
1110111001
1101100001
0000111011
57/76
Execução
SCHILDT, Herbert. Java para iniciantes.
58/76
Execução
SILVA, Fabricio; LEITE, Márcia; OLIVEIRA, Diego. Paradigmas de Programação.
59/76
Execução
SCHILDT, Herbert. Java para iniciantes.
60/76
Execução
SCHILDT, Herbert. Java para iniciantes.
SCHILDT, Herbert. Java para iniciantes.
61/76
Execução
62/76
Execução
Código Fonte Código Fonte
Desenvolvimento
Compilador Compilador
Código de Bytecode
Máquina 63/76
Execução Código de
Máquina
Bytecode
Bytecode
Código de
Máquina
Sistema
Tempo de
Operacional
execução
Código de
Máquina Sistema
Hardware Operacional
Hardware
64/76
Execução
Brij kishore Pandey
Ambiente de Código Fonte
Desenvolvimento
Bytecode
Bibliotecas
Binário Execução 65/76
Configuração
https://www.oracle.com/br/java/technologies/downloads/#jdk21-windows
66/76
Configuração
https://www.oracle.com/br/java/technologies/downloads/#jdk21-windows
67/76
Configuração
SCHILDT, Herbert. Java para iniciantes.
https://www.oracle.com/br/java/technologies/downloads/#jdk21-windows
68/76
Configuração
SCHILDT, Herbert. Java para iniciantes.
69/76
Configuração
70/76
Configuração
DEITEL, Paul. Java: como programar.
71/76
Configuração
https://moodle.joinville.udesc.br/
72/76
Configuração
https://moodle.joinville.udesc.br/
73/76
Configuração
https://moodle.joinville.udesc.br/
74/76
Configuração
https://netbeans.apache.org/front/main/download/nb20/
75/76
Resumo
❑ Paradigma de Programação: Define um modelo para solução de
problemas.
❑ Programação Orientada a Objetos: O paradigma da orientação a
objetos é inseparável da linguagem Java, embora possa não ser muito
perceptível em programas pequenos.
❑ Ambiente de Desenvolvimento: Quando instalado e configurado, os
códigos em Java podem ser escritos em softwares mais simples como
blocos de notas, até softwares mais avanças como NetBeans.
❑ Independência de plataforma: O código Java é compilado para
bytecode, que é executado pela Máquina Virtual Java (JVM).
❑ Orientação a Objetos: Não é apenas uma linguagens de programação,
mas também uma filosofia de desenvolvimento de software (e.g. UML).
76/76
Referências
SCHILDT, Herbert. Java para iniciantes: crie, compile e execute. 6. ed.
Porto Alegre: Bookman, 2015. Disponível em:
<https://app.minhabiblioteca.com.br/reader/books/9788582603376>.
SILVA, Fabricio; LEITE, Márcia; OLIVEIRA, Diego. Paradigmas de
Programação. Porto Alegre: SAGAH, 2019. Disponível em:
<https://app.minhabiblioteca.com.br/reader/books/9788533500426>.
DEITEL, Paul. Java: como programar. 4. ed. Porto Alegre: Bookman, 2003.
DEITEL, Paul. Java: como programar. 10. ed. São Paulo: Pearson Education
do Brasil, 2017.
Centro de Ciências Tecnológicas 77/76
Programação Orientada a Objetos – (POO0001)
JAVA
Alexandre Mendonça Fava
[email protected] Universidade do Estado de Santa Catarina – UDESC
Programa de Pós-graduação em Computação Aplicada – PPGCA