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/