12
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

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

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

• 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

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

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

JDK x JRE...

Desenvolvimento de Aplicações Java

Máquina Virtual Java

MS

Windows Linux

Google

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

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

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?