Algoritmos e Programação II Agenda Desenvolver Software Objetos Classes Estudo de algumas Classes da API Pacotes Criando nossa primeira classe Desenvolver SOFTWARE GAP Semântico Distância entre o problema no mundo real e o modelo abstrato construído; Quanto menor, mais rápida será a construção da solução; Portanto, diminuir o gap semântico tornou-se um dos objetivos da Engenharia de Software; O paradigma orientado a objetos busca meios de diminuir este gap. Paradigmas de desenvolvimento O que é um paradigma? Um exemplo, um modelo, um padrão; Um conjunto de idéias, uma base filosófica. Um paradigma de desenvolvimento agrupa métodos e técnicas que seguem um mesmo conjunto de princípios; Os dois mais conhecidos são: ◦ Desenvolvimento Estruturado; ◦ Orientação a Objetos (OO). Paradigmas de desenvolvimento Estruturado: ◦ Modelo entrada – processamento – saída; ◦ Dados separados das funções. Orientado a Objetos (OO): ◦ O mundo é composto por objetos; ◦ Objetos combinam dados e funções; ◦ Conceitos do problema são modelados como objetos que são associados e interagem entre si. Paradigma OO x Estruturado Desvantagens do Paradigma Estruturado O gap semântico é maior; Frequentemente gera sistemas difíceis de serem mantidos: ◦ As funções tem que conhecer a estrutura dos dados; ◦ Mudanças na estrutura dos dados acarreta alteração em todas as funções relacionadas. Benefícios esperados pela OO Capacidade de enfrentar novos domínios; Melhoria da interação analistas x especialistas; Aumento da consistência interna da análise; Uso de uma representação básica consistente para análise e projeto; Alterabilidade, legibilidade e extensibilidade; Possibilidade de ciclos de vida variados; Apoio à reutilização. Filosofia O mundo é composto por objetos; OO tenta gerenciar a complexidade dos problemas do mundo real abstraindo o conhecimento relevante e encapsulando-o em objetos. Programação Orientada a Objetos POO é o paradigma de programação dominante nos dias de hoje, apesar de ter mais de 30 anos!!! (Simula ’67 e SmallTalk’72); Demorou muito tempo pra ser adotada, mas hoje em dia é o paradigma principal; Anos 70 e 80: Programação estruturada. – Enfatiza o uso de procedimentos que modificam o estado do programa. Programação Orientada a Objetos POO é um paradigma de programação de computadores onde se usam classes e objetos, para representar e processar os dados em um programa de computador; Geralmente em um programa orientado a objetos (por exemplo em Java) temos várias definições de classes e um aplicativo (a classe que contém o main em Java), que cria os objetos partindo das classes e usa as operações desses objetos. Objetos Objetos Pode ser descrito por um conjunto de atributos e seu comportamento (operações). Podem ser coisas abstratas (ex.: uma reserva de passagem aérea) ou concretas (ex.: um documento). Ex: Objetos Atributos: são as características deste objeto, por exemplo, CARRO. Cor Marca Velocidade Objetos Comportamento: são os métodos que o objeto pode executar, por exemplo, CARRO. Acelerar Freiar Parar Objetos Estado – definido pelo valor de seus atributos; Comportamento – são os métodos; Identidade – são as referências. Grupo de Objetos Com os mesmos atributos e mesmo comportamento pertencem a mesma classe. Exemplo: CARRO Nome da CLASSE COR MARCA VELOCIDADE Atributos ACELERAR FREIAR PARAR Métodos Grupo de Objetos CARRO 1 CARRO 2 CARRO 3 COR: COR:“azul” azul MARCA: MARCA:“gol” gol VELOCIDADE: 60 COR: “branca” MARCA: “vectra” VELOCIDADE: 70 COR: “verde” MARCA: “fiesta” VELOCIDADE: 50 ACELERAR FREIAR PARAR ACELERAR FREIAR PARAR ACELERAR FREIAR PARAR 3 Objetos da Classe CARRO Classes Classe É um modelo que define os atributos e métodos comuns a um conjunto de objetos. Um objeto é uma instância de uma CLASSE. Exemplo: O objeto CARRO 1 é uma instância da classe carro. Classes na Linguagem Java Possui inúmeras classes distribuídas em vários pacotes. PACOTES – é uma espécie de recipiente para classes que estão logicamente relacionadas. API – (Application Programming Interface) Link: http://download.oracle.com/javase/1.4.2/docs/api