Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

39
Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POO Aula 02

Transcript of Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Page 1: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Introdução POO e Java

Eduardo Figueiredo

10 de Março de 2010

POO Aula 02

Page 2: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Tópicos da Aula

Conceitos fundamentais de software

Programação orientada a objetos e reutilização de software

Um pouco da história de Java

Tecnologia Java

Page 3: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Conceitos FundamentaisDesenvolvimento de Software

Page 4: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

O que é software?

Programa de computador + Documentação

Classificação fundamental Produtos genéricos (ex. MS Office) Produtos encomendados (ex. Locadora do

Zé)

Page 5: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Crise do Software (1968)

Custos de hardware caindo Custos do software subindo

Avanços em hardware Permitem desenvolvimento de sistemas

cada vez mais complexos Resultado (software)

Custos altos, projetos atrasados, sistemas não confiáveis, desempenho insatisfatório, etc...

Page 6: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Software está em todo lugar

Page 7: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Sistemas Críticos

Equipamentos médicos Extremamente críticos Lidam com vidas

Caixas eletrônicos Prejuízos financeiros

Page 8: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Confiabilidade de Software

Exemplo: Vôo Air France Rio - Paris1. Dados conflitantes (falha nos sensores)

2. Sistema assume o controle (piloto automático)

3. Piloto tenta reiniciar o sistema (boot)

4. Em 4 minutos o avião mergulha no oceano

The Last Four Minutes of Air France Flight 447. http://www.spiegel.de/international/world/0,1518,679980,00.html

Page 9: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Preço e Desempenho

Celular Pouco espaço na memória Grande variação em

características de aparelhos

Page 10: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Programação Orientada a Objetos

Reutilização de Software

Vantagens Software mais confiável (já foi usado antes) Sistemas mais baratos (parte já estava

pronto) Projetos mais elegantes e eficientes

Page 11: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Reutilização de Software

Page 12: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Meu Primeiro UML

Pessoa

nomeemail

Aluno

matricula

Professor

Page 13: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Sistema Acadêmico

Pessoa

nomeemail

Aluno

matricula

Professor

SistemaAcademico

Page 14: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Locadora de DVD

Pessoa

nomeemail

Cliente

registro

Funcionario

MinhaLocadora

DVD

titulo

Page 15: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Locadora de DVD

Pessoa

nomeemail

Cliente

registro

Funcionario

MinhaLocadora

DVD

titulo

<locados>

Page 16: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Campeonato de Futebol

Pessoa

nomeemail

Jogador

posicao

Presidente

CampeonatoBrasileiro

Time

nome

Tecnico

...

Page 17: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Um Pouco de História

Page 18: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Classificação das Linguagens

Linguagens de Máquina +1300042774

(traduzido depois para 0 e 1) Linguagens Assembly

load basepay / add overpay / store grosspay Linguagens de Alto Nível

grosspay = basepay + overpay

Page 19: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

De onde veio Java?

BCLP (1967) por Martin Richards

Linguagem C (1972) por Dennis Ritchie

C++ (1980) por Bjarne Stroustrup, Bell

Java (1995) pela Sun

Page 20: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Bibliotecas de Java (API)

Organização da Biblioteca Pacotes -> Classes -> Métodos (função)

Por que usar classes da biblioteca? Ganhar de tempo Mais confiáveis São portáveis São eficientes, etc.

Page 21: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Tecnologia Java

Page 22: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Plataforma Java

Principais Edições

J2EEJ2SE J2ME

Page 23: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

J2SE (Java Padrão)

Page 24: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

J2EE (Aplicações Web Complexas)

Page 25: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

J2ME (Dispositivos Móveis)

connecteddeviceconfiguration

connectedlimiteddeviceconfiguration

Page 26: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

De Procedimental para OO

Page 27: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Programação Procedimental

#define MAXCLIENTES 10Definição de Constantes

Page 28: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

#define MAXCLIENTES 10

Definição de Tipos

typedef struct {

char *nome;

char *endereco;

} Cliente;

#define MAXCLIENTES 10

Programação Procedimental

Page 29: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

#define MAXCLIENTES 10

Cliente *meusClientes[MAXCLIENTES]; // Cliente meusClientes[MAXCLIENTES];// Cliente **meusClientes; Definição de Variáveis Globais

typedef struct {

char *nome;

char *endereco;

} Cliente;

#define MAXCLIENTES 10

typedef struct {

char *nome;

char *endereco;

} Cliente;

Programação Procedimental

Page 30: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

#define MAXCLIENTES 10

Cliente *meusClientes[MAXCLIENTES]; // Cliente meusClientes[MAXCLIENTES];// Cliente **meusClientes;

Cliente* criarCliente() { ...}void criarClientes () { ... for (...) { ... criarCliente(); }}

Definição de funções

typedef struct {

char *nome;

char *endereco;

} Cliente;

#define MAXCLIENTES 10

typedef struct {

char *nome;

char *endereco;

} Cliente;

Cliente *meusClientes[MAXCLIENTES]; // Cliente meusClientes[MAXCLIENTES];// Cliente **meusClientes;

Programação Procedimental

Page 31: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

#define MAXCLIENTES 10

Cliente *meusClientes[MAXCLIENTES]; // Cliente meusClientes[MAXCLIENTES];// Cliente **meusClientes;

Cliente* criarCliente() { ...}void criarClientes () { ... for (...) { ... criarCliente(); }}

Definição da função mainint main () { ... criarClientes();}

typedef struct {

char *nome;

char *endereco;

} Cliente;

#define MAXCLIENTES 10

typedef struct {

char *nome;

char *endereco;

} Cliente;

Cliente *meusClientes[MAXCLIENTES]; // Cliente meusClientes[MAXCLIENTES];// Cliente **meusClientes;

Cliente* criarCliente() { ...}void criarClientes () { ... for (...) { ... criarCliente(); }}

Programação Procedimental

Page 32: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Programação ProcedimentalEstrutura do Programa

#define MAXCLIENTES 10

Cliente *meusClientes[MAXCLIENTES]; // Cliente meusClientes[MAXCLIENTES];// Cliente **meusClientes;

Cliente* criarCliente() { ...}void criarClientes () { ... for (...) { ... criarCliente(); }}

Definição de Constantes

Definição de Tipos

Definição de Variáveis Globais

Definição de funções

Definição da função mainint main () { ... criarClientes();}

typedef struct {

char *nome;

char *endereco;

} Cliente;

Page 33: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Migrando para Java

Procedimental Orientado a ObjetosDefinição de Classes

Page 34: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Programação OO

public class Clientes { static final MAX = 10; Cliente vetorClientes[] = new Cliente[MAX]; public Clientes () { ... for (...) { ... new Cliente(); }}

Definição de Classe

public class Teste { public static void main (String args) { Clientes meusClientes = new Clientes(); }}

public class Cliente {

String nome;

String endereco;

public Cliente (String n, String e) {

nome = n ;

endereco = e;

}

}

Definição de Classe

Definição de Classe

Page 35: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Instalando Java

Instalar o JDK (Java 2 SE) http://java.sun.com/

Instalar/Usar um editor de textos TextPad (http://www.textpad.com/)

Configurar variáveis de ambiente Path e Classpath

Page 36: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Editor de Texto x IDE

Usar apenas editor de texto Exemplo: TextPad

(http://www.textpad.com/) Compilar e executar

Não usar ambientes de desenvolvimento Eclipse, JBuilder, NetBeans, etc.

Page 37: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Editor de Texto x IDE

Usar apenas editor de texto Exemplo: TextPad

(http://www.textpad.com/) Compilar e executar

Não usar ambientes de desenvolvimento Eclipse, JBuilder, NetBeans, etc.

Page 38: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Próxima Aula

Java: Como Programar, 6a. Edição Seção 1.16: Estudo de Caso de ES (p. 14) Seção 3.1: Introdução (p. 58) Seção 3.2: Classes, métodos, ... (p. 58) Seção 3.3: Declarando uma Classe (p. 59) Seção 3.4: Declarando um Método (p. 62) Seção 3.5: Variáveis de Instancia,... (p. 64)

Page 39: Introdução POO e Java Eduardo Figueiredo 10 de Março de 2010 POOAula 02.

Referência

DEITEL, H. M.; DEITEL P. J. Java: Como Programar, 6a. Edição. Pearson, 2005. (Livro Texto).

BOOCH, G., RUMBAUGH, J., JACOBSON, I. UML, Guia do Usuário. Rio de Janeiro: Campus, 2000.

Documentação Java. http://java.sun.com/