programação orientada a objetos (dpadf 0063)bruno/disciplinas/poo/slides/aula2_java... ·...
TRANSCRIPT
![Page 1: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... · Programação Orientada a Objetos ... •A ideia era produzir uma linguagem de computador](https://reader030.vdocuments.mx/reader030/viewer/2022021721/5bf47f9a09d3f2be5a8c6022/html5/thumbnails/1.jpg)
Programação Orientada a Objetos
(DPADF 0063) Aula 2 – Java como ferramenta de experimentação
Universidade Federal de Santa Maria
Colégio Agrícola de Frederico Westphalen
Curso Superior de Tecnologia em Sistemas para Internet
Prof. Bruno B. Boniati – www.cafw.ufsm.br/~bruno
![Page 2: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... · Programação Orientada a Objetos ... •A ideia era produzir uma linguagem de computador](https://reader030.vdocuments.mx/reader030/viewer/2022021721/5bf47f9a09d3f2be5a8c6022/html5/thumbnails/2.jpg)
Write once, compile once and run anywhere!
![Page 3: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... · Programação Orientada a Objetos ... •A ideia era produzir uma linguagem de computador](https://reader030.vdocuments.mx/reader030/viewer/2022021721/5bf47f9a09d3f2be5a8c6022/html5/thumbnails/3.jpg)
Um pouco de história ...
• Em 1991 a Sun Microsystems, de olho no crescente mercado de
dispositivos eletrônicos inteligentes, voltados ao consumidor
financiou um projeto interno (Green Project);
• A ideia era produzir uma linguagem de computador reduzida e
simples e que gerasse um código eficiente para ser utilizada em
dispositivos com algumas restrições:
▫ Pouca memória;
▫ Diferentes CPUs;
O software produzido não poderia se limitar a uma única arquitetura.
• James Gosling (chefe da equipe) batizou a linguagem de Oak.
![Page 4: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... · Programação Orientada a Objetos ... •A ideia era produzir uma linguagem de computador](https://reader030.vdocuments.mx/reader030/viewer/2022021721/5bf47f9a09d3f2be5a8c6022/html5/thumbnails/4.jpg)
Mais um pouco de história ...
• O nome Oak já era patenteado então a linguagem foi batizada de
Java em homenagem a Ilha de Java que produzia o café que a equipe
da Sun consumia.
• O mercado de dispositivos eletrônicos não teve um crescimento tão
interessante conforme previsto e o Green Project perder força;
• Na mesma época há uma explosão de popularidade da World Wide
Web e este parece ser um mercado potencial para a linguagem Java;
• Em 1995 Java é anunciado formalmente.
• Em 2009 a Oracle adquire a SUN por US$ 7,4 bilhões e é quem
mantém o Java atualmente.
Duke
um dos símbolos
de Java
![Page 5: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... · Programação Orientada a Objetos ... •A ideia era produzir uma linguagem de computador](https://reader030.vdocuments.mx/reader030/viewer/2022021721/5bf47f9a09d3f2be5a8c6022/html5/thumbnails/5.jpg)
Características ...
• Linguagem simples e orientada a objetos;
• Subconjunto de C++
▫ Reduzido número de palavras reservadas e grande poder de
expressão;
▫ Construções complexas e desnecessárias que não fazem
parte do núcleo mínimo exigido para uma linguagem
orientada a objetos são inicialmente eliminadas ... Instruções pré-processadas;
Herança múltipla;
Sobrecarga de operadores;
Programação genérica
![Page 6: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... · Programação Orientada a Objetos ... •A ideia era produzir uma linguagem de computador](https://reader030.vdocuments.mx/reader030/viewer/2022021721/5bf47f9a09d3f2be5a8c6022/html5/thumbnails/6.jpg)
Características (cont.) ...
• Fortemente tipada ▫ Ampla verificação e erros e checagem de tipos em tempo de
compilação;
• Inexistência do conceito de ponteiros ▫ O que existem são referências a objetos;
• Gerenciamento automático de memória
▫ Garbage Collection – Coletor de Lixo
![Page 7: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... · Programação Orientada a Objetos ... •A ideia era produzir uma linguagem de computador](https://reader030.vdocuments.mx/reader030/viewer/2022021721/5bf47f9a09d3f2be5a8c6022/html5/thumbnails/7.jpg)
• Independente, Interpretada e Portável ...
Características (cont.) ...
Arquivo fonte (.c) Compilador
Código objeto
Binário Executável
(Arquitetura
Específica)
Arquivo fonte (.java)
Compilador Código
intermediário bytecode
Interpretador
Interpretador
Interpretador
Interpretador
![Page 8: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... · Programação Orientada a Objetos ... •A ideia era produzir uma linguagem de computador](https://reader030.vdocuments.mx/reader030/viewer/2022021721/5bf47f9a09d3f2be5a8c6022/html5/thumbnails/8.jpg)
Etapas do desenvolvimento ...
Editor
Compilador
Carregador de
Classe
Verificador de
Bytecode
disco
disco
disco
Etapa 1 – O programa é criado em
um editor e armazenado no disco
com a extensão .java
Etapa 2 – O compilador cria
bytecodes e os armazena em
disco com a extensão .class
Etapa 3 – O carregador de
classe lê arquivos .class
que contém bytecodes a
partir de um disco e coloca
estes bytecodes na
memória.
Etapa 4 – O verificador de
bytecodes confirma que todos
os bytecodes são válidos e
não violam restrições de
segurança do Java
Java Virtual
Machine (JVM) Etapa 5 – Para executar o programa, a JVM lê
os bytecodes e os traduz para uma linguagem
de baixo nível específica para a plataforma
onde o mesmo está sendo executado
![Page 9: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... · Programação Orientada a Objetos ... •A ideia era produzir uma linguagem de computador](https://reader030.vdocuments.mx/reader030/viewer/2022021721/5bf47f9a09d3f2be5a8c6022/html5/thumbnails/9.jpg)
Antes de começar...
• .java = código fonte
• .class = código intermediário (bytecodes)
• JRE = Java Runtime Environment ▫ Máquina Virtural Java (JVM = Java Virtual Machine)
• JDK = Java Development Kit (Kit de Desenvolvimento) ▫ javac – compilador
▫ java – interpretador de bytecodes
▫ javadoc – gerador de documentação
▫ jdb – debugger
▫ jar – ferramenta para gerência de Java Archives
▫ javap – disassembler (fornece um protótipo das classes encontradas no
arquivo .class);
![Page 10: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... · Programação Orientada a Objetos ... •A ideia era produzir uma linguagem de computador](https://reader030.vdocuments.mx/reader030/viewer/2022021721/5bf47f9a09d3f2be5a8c6022/html5/thumbnails/10.jpg)
JDK x JRE...
Desenvolvimento de Aplicações Java
Máquina Virtual Java
MS
Windows Linux
Android
Mac
OS
Solaris
JDK
JRE
![Page 11: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... · Programação Orientada a Objetos ... •A ideia era produzir uma linguagem de computador](https://reader030.vdocuments.mx/reader030/viewer/2022021721/5bf47f9a09d3f2be5a8c6022/html5/thumbnails/11.jpg)
Exercícios para fixação
![Page 12: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... · Programação Orientada a Objetos ... •A ideia era produzir uma linguagem de computador](https://reader030.vdocuments.mx/reader030/viewer/2022021721/5bf47f9a09d3f2be5a8c6022/html5/thumbnails/12.jpg)
Edite, compile e execute import javax.swing.*;
public class Janela extends JFrame {
private static String labelPrefix = "No. de clicks:";
private int nClicks=0;
final JLabel lblMsg = new JLabel(labelPrefix+"0 ");
final JButton btnOk = new JButton("Ok");
JPanel painel = new JPanel();
public Janela(String titulo) {
setTitle(titulo);
setSize(250,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
painel.add(btnOk);
painel.add(lblMsg);
add(painel);
setVisible(true);
btnOk.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
btnOk_actionPerformed(e);
}
});
}
public void btnOk_actionPerformed(java.awt.event.ActionEvent e) {
nClicks++;
lblMsg.setText(labelPrefix + nClicks);
}
public static void main(String[] args){
Janela app = new Janela("Aplicação com Botao");
}
}
Edite, compile e
execute o código
ao lado.
O que vai
acontecer?
Transporte o
arquivo .class
para outro SO e
execute, qual é o
resultado?