1.33k likes | 1.63k Views
Orientação para Objetos Projeto de Sistemas Aplicativos para a Internet. FEA/USP EAD-5881 – Tecnologia de Informática P rof. Antonio Geraldo da Rocha Vidal vidal@usp.br. Conteúdo. Conceitos de Orientação a Objetos Classes Objetos Programação Introdução à Linguagem Java
E N D
Orientação para ObjetosProjeto de Sistemas Aplicativospara a Internet FEA/USPEAD-5881 – Tecnologia de Informática Prof. Antonio Geraldo da Rocha Vidal vidal@usp.br
Conteúdo • Conceitos de Orientação a Objetos • Classes • Objetos • Programação • Introdução à Linguagem Java • Conceitos e recursos básicos • Projeto de Sistemas Orientados a Objetos • UML - Unified Modeling Language
Paradigma • “Paradigma é um conjunto de regras que estabelece fronteiras e descreve como resolver problemas dentro destas fronteiras. Os paradigmas influenciam nossa percepção: ajudam-nos a organizar e a coordenar a maneira como olhamos para o mundo...” Daniel Morris e Joel Brandon
Paradigmas • Tradicional: baseia-se na compreensão de um sistema de informação como um conjunto de programas que executam processos sobre dados. • Objetos: vê um sistema de informação como uma coletânea de objetos que interagem entre si, apresentam características próprias, que são representadas pelas suas propriedades (dados) e métodos (processos).
Paradigmas Programa Classe Processos Propriedades Dados Métodos Tradicional Objetos
Orientação a Objetos - OO • Análise, projeto e programação orientados a objetos representam uma mudança de paradigma em relação às técnicas clássicas. • Objetos são os componentes de um sistema que pertencem a uma classe e possuem: • Encapsulamento • Herança • Polimorfismo • Propriedades • Métodos • Eventos • Mensagens Reutilização Flexibilidade Interoperabilidade
Bases das Metodologias OO • Diretamente derivada dos conceitos da programação orientada a objetos, a análise e o projeto orientados a objeto definem uma nova maneira de pensar nos problemas utilizando modelos organizados a partir de conceitos do mundo real. • O componente fundamental é a classe de objetos, algo que combina estrutura e comportamento em uma única entidade que pode derivar várias ocorrências ou instâncias de objetos semelhantes.
Origens da OO • Linguagens de Programação: Simula, Smaltalk, Flavours, Objective C, C++, Java, C#, Object Pascal e outras. • Inteligência Artificial: frames. • Banco de Dados: modelos semânticos de dados.
Expectativas da OO • A tecnologia de objetos oferece a modularidade de seus elementos podendo-se tomar um subconjunto existente e integrá-lo de uma maneira diferente em outra parte do software (sistema aplicativo). • Uma aplicação no universo de objetos consiste de um conjunto de blocos de construção auto-contidos e predefinidos que podem ser localizados, reparados ou substituídos. • A construção de código auto-contido propicia o teste completo antes de ser utilizado dentro da lógica de um sistema de informação.
Expectativas da OO • Possibilita incrementos graduais de componentes aos já instalados, ampliando a abrangência do sistema. • A combinação de módulos provê inicialmente um nível básico de funcionalidade que é estendido sucessivamente para atender novas situações, em um progresso contínuo da aplicação perante os usuários. • Forte direcionamento à reutilização de artefatos de software já existentes, que são criados uma única vez e disseminados.
Objetos de Software • Objetos são pacotes de software compostos por dados e procedimentos, que atuam sobre estes dados. • Os procedimentos são também conhecidos como métodos e determinam o comportamento do objeto. • Os dados são também conhecidos como propriedades e determinam o estado do objeto. • Objeto = dado + procedimentoObjeto = estado + comportamento
Objetos de Software Comportamentos Variáveis Dados Procedimentos Propriedades Métodos
Objeto Automóvel Mover Preço Dimensões Cor Potência Buzinar Parar
Objetos de Software Todo acesso aos dados ou propriedades de um objeto é feito através da sua interface, que expõe métodos e propriedades a outros objetos.
Encapsulamento • É definido como uma técnica para minimizar interdependências entre “módulos” através da definição de interfaces externas. Interface Mudanças na implementação de uma classe que preservea interface externa não afetam outras definições de classes.
Interfaces de Classes • Uma Interface descreve um grupo de classes com as mesmas: • Propriedades constantes; • Métodos abstratos; • Uma Interface define a estrutura ou “esqueleto” padrão de uma classe. • Não implementa nenhum comportamento real, mas apenas os declara. • Implementa propriedades constantes e métodos abstratos.
Mensagens • Objetos interagem e comunicam-se através de mensagens... Andar(...) Emissor Receptor As mensagens identificam os métodos a serem executados no objeto receptor e passam-lhes alguma informação.
Métodos • Um determinado método define um comportamento do objeto. • Tipos básicos de métodos: • Construtor (constrói estados) • Destruidor (destrói estados) • Transformador (transforma estados) • Acesso (fornece estados)
Abstração • Focalizar o essencial, ignorar propriedades acidentais ou específicas. Classe Automóvel Classe Mamífero A abstração deve sempre ter algum objetivo, pois é o objetivoele que determina o que é e o que não é essencial
Classes de Objetos • Uma classe de objetos descreve um grupo de objetos com: • Propriedades semelhantes; • Comportamentos semelhantes; • Relacionamentos comuns com outros objetos.
Classes Classificação Classe Automóvel Atributos Potência Velocidade Cor... Métodos Acelerar Frear Buzinar... Instanciação ObjetosInstâncias
Classes Classe PaiSuper Classe Atributos e métodos da classe. Instanciação de classe Subclasse Subclasse Atributos e métodos específicos.
Classes vs. Subclasses • Classes: • Contém informações sobre como uma subclasse ou um objeto deve ser e como deve se comportar. • Definem a forma e o comportamento padrão de subclasses e objetos nela baseados. • Subclasses: • São instâncias ou ocorrências de uma classe. • Herdam todas as suas características padrão de uma classe. • Além disso, podem possuir características específicas. • Podem derivar outras subclasses ou objetos nelas baseados.
Classes vs. Objetos • Classes: • Contém informações sobre como um objeto deve ser e como deve se comportar. • Definem a forma e o comportamento padrão de objetos nela baseados. • Objetos: • São instâncias ou ocorrências de uma classe. • Herdam todas as suas características padrão de uma classe ou subclasse. • Além disso, podem possuir características específicas. • Não podem derivar outros objetos neles baseados.
Relacionamentos entre Classes • Generalização • Herança • Agregação • Polimorfismo
Generalização / Especialização • Generalização é o relacionamento entre uma classe e uma ou mais versões refinadas dessa classe. Generalização Generalização é a abstração que permite compartilharsemelhanças entre classes, preservando suas diferenças. Especialização
Herança • Uma classe derivada ou subclasse herda as propriedades e métodos da classe mãe ou superclasse, mas pode: • Adicionar novos métodos próprios; • Estender suas propriedades/atributos; • Redefinir a implementação de métodos existentes.
Herança Localização de Métodos e Propriedades na Hierarquia Calcular() Instância
Herança Generalização Automóvel Propriedades e métodos comunscompartilhados por classes. AutomóvelEsportivo Propriedades e métodos diferentes de uma subclasse, acrescentando ou alterando características herdadas. Ferrari Especialização
Agregação Um objeto agregado é “construído” por vários componentes Agregação Fixa
Agregação Um objeto agregado é “feito” de componentes Empresa Departamento Setor Agregação Variável Pessoa
Polimorfismo • Refere-se a: • Vários comportamentos que um mesmo método ou operação pode assumir; • Capacidade de um nome referir-se a objetos diferentes que executam certas responsabilidades dependendo da mensagem que lhes é passada. • Um nome pode denotar objetos de muitas subclasses diferentes que estão relacionadas por alguma superclasse comum. Assim, um objeto identificado por esse nome tem a capacidade de responder a algum conjunto comum de operações de modos diferentes.
Evento vs. Estado • Evento: • Uma ocorrência significativa no mundo real que deve ser tratada pelos objetos de software. • São atividades específicas e predeterminadas, provocada pelo usuário ou pelo sistema. • Possuem métodos de objetos associados a eles. • Estado: • Situação de um objeto em um dado instante do tempo.
Objetos: propriedades • Características ou atributos dos objetos que são próprias da classe ou subclasse à qual pertencem. • Exemplo: objeto JOSÉ, pertencente à subclasse CLIENTE, da subclasse PESSOA FÍSICA, da classe PESSOA. • Número: 000001 • CPF: 999.888.777-66 • Nome: José da Silva • Endereço: Rua da Independência, 709 • Telefone: 3089-9090 • Etc.
Objetos: métodos & eventos • Cada objeto reconhece e pode responder a ações denominadas eventos próprios da sua classe/subclasse. • Eventos: • São atividades específicas e predeterminadas provocada pelo usuário ou pelo sistema. • Possuem métodos associados a eles. • Métodos: • São comportamentos ou procedimentos associados ao objeto. • Métodos podem existir independentemente de eventos.
Objetos: mensagens • Objetos recebem mensagens de outros objetos com os quais se relacionam. • Mensagens: • Transferem informações de um objeto para outro. • São enviadas e recebidas através de eventos. • São caracterizadas pelos métodos ou comportamentos dos objetos; tanto do que envia como do que recebe.
Objetos: polimorfismo • Usando a mesma mensagem, objetos podem assumir características e comportamentos diferentes: • De acordo com contextos específicos; • De acordo com eventos específicos; • De acordo com eventos e contextos específicos. • Um objeto pode assumir várias formas: • Propriedades/atributos diferentes; • Métodos/comportamentos diferentes.
Introdução às Linguagens Orientadas a Objetos Conceitos Básicos (Válidos para C++, C#, Java, J++ e J#)
Java It’s a jungle out there So drink your Java Propaganda do Printer’s Caféem Palo Alto CA/USA
Por que surgiu o Java? • Software para eletro-domésticos (1992) • Mínimo uso de memória • Mínimo preço • C++ simplificado • Desenvolvida pela Sun Microsystems Inc. (1994) • Distribuição de software através da Internet (1996) • Novo paradigma de programação: • Orientada a objeto • Totalmente aberta • Independente de plataforma e sistema operacional
Características do Java da Sun • Linguagem orientada a objetos • Estrutura semelhante ao C++ • Gera Bytecodes • Interpretada • Alta Performance (JIT) • Segurança • Endereçamento restrito • Objetos assinados • Aplicação Carregada Localmente
Características do Java da Sun • Aplicações Personalizadas • Independência de Arquitetura • Neutra • Distribuída • Não há herança múltipla • Não há aritmética de ponteiros • Inclui tratamento de exceções • Implementa “Coletor de Lixo”
Java Script • Primeira Versão do Java • Aplicação Interna ao HTML • Interpretada • Não havia o conceito de ByteCodes <script language=“Java Script” Function -------- { ....... } </script>
Applet Java • Aplicação executada quando se chama uma página WWW • É carregada na Máquina Cliente • Restringe-se a uma determinada área (janela) <applet code=“apl.class” codebase=“http://www.fia.fea.usp.br/vidal align=left width=300 height=100 <param name=tamanho value=30> <param name=fonte value “Arial”> </applet:
Aplicação Java • Aplicação executada “stand-alone” • Exige somente a presença do interpretador Java (Java Virtual Machine) public class HelloWorldApp { // Definição do Método MAIN public static void main (String args[]) { String text = "Hello World!"; System.out.println(text); } }
Java e Orientação a Objetos • Java suporta as principais características da programação orientada a objeto através de seus construtores de classes e de interfaces. • Uma classe é um modelo que descreve um conjunto inteiro de objetos. Em geral, uma classe tem os mesmos membros, isto é, propriedades (dados) e métodos (procedimentos), que os objetos criados a partir dela. • Uma interface representa uma coleção de comportamentos relacionados. Contém somente declarações de métodos e propriedades constantes.