POO
Aula 02
Introdução POO e Java
Eduardo Figueiredo
10 de Março de 2010
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
Conceitos Fundamentais
Desenvolvimento de Software
O que é software?
Programa de computador +
Documentação
Classificação fundamental
Produtos genéricos (ex. MS Office)
Produtos encomendados (ex. Locadora do
Zé)
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...
Software está em todo lugar
Sistemas Críticos
Equipamentos médicos
Extremamente críticos
Lidam com vidas
Caixas eletrônicos
Prejuízos financeiros
Confiabilidade de Software
Exemplo: Vôo Air France Rio - Paris
1. 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
Preço e Desempenho
Celular
Pouco espaço na memória
Grande variação em
características de aparelhos
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
Reutilização de Software
Meu Primeiro UML
Pessoa
nome
email
Professor
Aluno
matricula
Sistema Acadêmico
SistemaAcademico
Pessoa
nome
email
Professor
Aluno
matricula
Locadora de DVD
MinhaLocadora
Pessoa
DVD
nome
email
Funcionario
titulo
Cliente
registro
Locadora de DVD
MinhaLocadora
Pessoa
DVD
nome
email
Funcionario
titulo
Cliente
registro
<locados>
Campeonato de Futebol
CampeonatoBrasileiro
Pessoa
Time
nome
email
Presidente
Tecnico
nome
Jogador
posicao
...
Um Pouco de História
Classificação das Linguagens
Linguagens de Máquina
Linguagens Assembly
+1300042774
(traduzido depois para 0 e 1)
load basepay / add overpay / store grosspay
Linguagens de Alto Nível
grosspay = basepay + overpay
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
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.
Tecnologia Java
Plataforma Java
Principais Edições
J2SE
J2EE
J2ME
J2SE (Java Padrão)
J2EE (Aplicações Web Complexas)
J2ME (Dispositivos Móveis)
connected
device
configuration
connected
limited
device
configuration
De Procedimental para OO
Programação Procedimental
#define MAXCLIENTES 10
Definição de Constantes
Programação Procedimental
#define MAXCLIENTES 10
typedef struct {
char *nome;
char *endereco;
} Cliente;
Definição de Tipos
Programação Procedimental
#define MAXCLIENTES 10
typedef struct {
char *nome;
char *endereco;
} Cliente;
Cliente *meusClientes[MAXCLIENTES];
// Cliente meusClientes[MAXCLIENTES];
// Cliente **meusClientes;
Definição de Variáveis Globais
Programação Procedimental
#define MAXCLIENTES 10
typedef struct {
char *nome;
char *endereco;
} Cliente;
Cliente *meusClientes[MAXCLIENTES];
// Cliente meusClientes[MAXCLIENTES];
// Cliente **meusClientes;
Cliente* criarCliente() {
...
}
void criarClientes () {
...
for (...) {
... criarCliente();
}
}
Definição de funções
Programação Procedimental
#define MAXCLIENTES 10
typedef struct {
char *nome;
char *endereco;
} Cliente;
Cliente *meusClientes[MAXCLIENTES];
// Cliente meusClientes[MAXCLIENTES];
// Cliente **meusClientes;
Cliente* criarCliente() {
...
}
void criarClientes () {
...
for (...) {
... criarCliente();
}
}
int main () {
...
criarClientes();
}
Definição da função main
Programação Procedimental
Estrutura do Programa
#define MAXCLIENTES 10
typedef struct {
char *nome;
char *endereco;
} Cliente;
Definição de Constantes
Cliente *meusClientes[MAXCLIENTES];
// Cliente meusClientes[MAXCLIENTES];
// Cliente **meusClientes;
Cliente* criarCliente() {
...
}
void criarClientes () {
...
for (...) {
... criarCliente();
}
}
int main () {
...
criarClientes();
}
Definição de Tipos
Definição de Variáveis Globais
Definição de funções
Definição da função main
Migrando para Java
Procedimental
Orientado a Objetos
Definição de Classes
Programação OO
public class Cliente {
String nome;
String endereco;
public Cliente (String n, String e) {
nome = n ;
endereco = e;
}
}
public class Clientes {
static final MAX = 10;
Cliente vetorClientes[] = new Cliente[MAX];
public Clientes () {
...
for (...) {
... new Cliente();
}
}
Definição de Classe
Definição de Classe
Definição de Classe
public class Teste {
public static void main (String args) {
Clientes meusClientes = new Clientes();
}
}
Instalando Java
Instalar o JDK (Java 2 SE)
Instalar/Usar um editor de textos
http://java.sun.com/
TextPad (http://www.textpad.com/)
Configurar variáveis de ambiente
Path e Classpath
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.
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.
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)
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/