Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... ·...

Preview:

Citation preview

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

Write once, compile once and run anywhere!

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.

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

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

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

• 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

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

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);

JDK x JRE...

Desenvolvimento de Aplicações Java

Máquina Virtual Java

MS

Windows Linux

Google

Android

Mac

OS

Solaris

JDK

JRE

Exercícios para fixação

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?

Recommended