Introdução a Programação Orientada a Objetos • Introdução – Noções básicas – Outras disciplinas complementarão • Programação – Como elaborar programas • Orientada a Objetos – Paradigma de modelagem conceitual 1 Paradigma de Orientação a Objetos • Surgiu na tentativa de solucionar problemas existentes no desenvolvimento de softwares complexos com confiabilidade e baixo custo de desenvolvimento e manutenção • Representar objetos em um software é mais natural e permanente do que representar a sua funcionalidade – decomposição funcional –, pois essa é mutável 2 Mundo Real ESPAÇO DE PROBLEMAS Mundo Computacional Gap Semântico ESPAÇO DE SOLUÇÕES Identificação dos aspectos mais importantes do mundo real para fins de representação no computador 3 Sobre o Gap Semântico • Diferenças entre – Espaço de Problemas – Espaço de Soluções • Software – Modelo para a solução de um problema do mundo real – Mapeamento de objetos pertencentes ao espaço de problemas para o espaço de soluções – Operações sobre objetos abstratos correspondam a operações do mundo real 4 Sobre o Gap Semântico • Projetista de Software – Cria algoritmos que, quando executados no computador, produzirão resultados que podem ser mapeados fisicamente para alguma ação do mundo real ou examinados/interpretados por pessoas • Assim... – Quanto mais próximo, conceitualmente, estiver o espaço de soluções do espaço de problemas, mais fácil será o desenvolvimento de uma aplicação, assegurando sua compreensão, confiabilidade e manutenção 5 Objetivo do Paradigma de Orientação a Objetos DIMINUIR O GAP SEMÂNTICO ESPAÇO DE PROBLEMAS ESPAÇO DE SOLUÇÕES 6 Mundo Real Mundo Computacional ESPAÇO DE SOLUÇÕES ESPAÇO DE PROBLEMAS Mapeamento Processo de Identificação de Abstrações Se essas abstrações não tiverem uma expressão direta, ou próxima, do mundo computacional, a complexidade da solução será aumentada 7 Modelagem Conceitual • Tarefa mais importante do processo de desenvolvimento de um software – Realiza-se a análise do domínio da aplicação e a modelagem das entidades e fenômenos desse domínio que o projetista considera importante, independentemente da implementação • A tarefa de modelagem conceitual envolve dois mecanismos – Abstração – Representação 8 Modelagem Conceitual Operação mental para observar um domínio e capturar sua estrutura Uso de convenções de representação REPRESENTAÇÃO ABSTRAÇÃO Entidade Observada Entidade Representada Notação gráfica, Avião linguagem de programação 9 Abstração Podem ser feitas diferentes abstrações a partir de um mesmo objeto do mundo real I, II, III Maça peso cor da casca formato Cardinalidade do conjunto 3 Receita ATRIBUTO CATEGORIA AÇÃO 10 Abstração Pontos de vista distintos cor aparência Correr Brincar peso tamanho Criar Comer 11 Abstração • Mecanismo utilizado na análise de um domínio • Indivíduo observa a realidade e dela abstrai entidades e ações consideradas essenciais para uma aplicação, excluindo todos os aspectos julgados irrelevantes • Exercício: analisar os objetos apresentados a seguir e distinguir características e ações que estes objetos podem executar 12 13 Abstração • Ato de abstrair(-se) • Ato de separar mentalmente um ou mais elementos de uma totalidade complexa (coisa, representação, fato), os quais só mentalmente podem subsistir fora dessa totalidade • O resultado de abstrações (termo, conceito, idéia, elemento de classe, etc.) 14 Operações de Abstração As Operações de Abstração relevantes para a Modelagem Conceitual são: – Classificação – Instanciação – Generalização – Especialização – Agregação – Decomposição – Associação Esses conceitos serão abordados mais tarde durante a disciplina 15 Conceitos Básicos de OO • Mundo real é formado por Entidades que interagem entre si • Entidades podem ser classificadas em Categorias • A categoria de uma entidade define suas – Características, ou particularidades – Funcionalidades, ou atividades que as entidades de uma categoria podem executar 16 Substituindo por sinônimos… Entidades por Objetos Categorias por Classes Características por Atributos Funcionalidades por Métodos 17 Em outras palavras… • Mundo real é formado por Objetos que interagem entre si • Objetos podem ser classificados em Classes • A classe de um objeto define seus – Atributos, ou particularidades – Métodos, ou as atividades que os objetos de uma classe podem executar 18 Segundo o dicionário Aurélio Século XXI http://www2.uol.com.br/aurelio os significados dos termos Classe Objeto Atributo Método são... 19 Classe • Categoria, ordem • Numa série ou num conjunto, grupo ou divisão que apresenta características semelhantes • Informática: Em programação ou modelagem orientada a objetos, categoria descritiva geral, que abrange o conjunto de objetos que compartilham uma ou mais características quanto a seus itens de dados e procedimentos associados 20 Objeto • Tudo que é manipulável e/ou manufaturável • Tudo que é perceptível por qualquer dos sentidos • Informática: Em programação orientada a objetos, qualquer módulo que contém rotinas e estruturas de dados e é capaz de interagir com outros módulos similares, trocando mensagens 21 Atributo • Aquilo que é próprio de um ser • Informática: Na modelagem conceitual, cada uma das propriedades que definem um objeto ou entidade Método • Caminho pelo qual se atinge um objetivo • Informática: Programa que regula previamente uma série de operações que devem ser realizadas, apontando erros evitáveis, em vista de um resultado determinado 22 Classes • Todos os objetos do mundo real podem ser divididos em categorias ou classes se eles possuírem as mesmas características, ou atributos, e mesmas funcionalidades, ou métodos • Muito importante é compreender a diferença entre – Atributo – Valor de atributo 23 Classes • Todos os objetos da mesma classe possuem os mesmos atributos • Uma classe – Define as características de um grupo de objetos, ou seja, define como serão as instâncias pertencentes a ela – Define também quais serviços, ou operações, qualquer objeto da classe poderá executar, ou seja, seu comportamento 24 Classes • Representação simples em UML Nome da Classe Definição dos Atributos Definição das funcionalidades ou Métodos • Como todo objeto é uma instância de alguma classe, isto é, todo objeto pertence a uma classe, então a classe pode ser considerada como o tipo do objeto 25 UML • Acrônimo de Unified Modeling Language – Linguagem de Modelagem Unificada • Pode ser usada com qualquer processo de desenvolvimento • Padronizada pelo OMG – Object Management Group – e já sofreu atualizações • Versão atual: UML 2.0 • Mais informações em – pt.wikipedia.org/wiki/UML – www.uml.org 26 Objetos Objeto é qualquer coisa que tenha algum significado dentro do contexto de um problema, seja ela concreta ou abstrata, ou seja, qualquer coisa que apresente alguma utilidade ou sirva para um propósito • Para programação, um objeto é a abstração de uma entidade do mundo real que apresenta sua própria existência, identificação, características de composição e que pode executar determinados serviços quando solicitado 27 Exemplos: Objetos e Classes Objetos um livro uma página de um livro uma viagem uma determinada data um endereço de alguém uma pessoa uma determinada festa uma música uma conexão de rede uma nota fiscal uma determinada porta Classes Livro Página de livro Viagem Data Endereço Pessoa Festa Música Conexão de rede Nota fiscal Porta 28 Exemplos • Seja a definição de uma classe Porta, que deve representar as características e funcionalidades consideradas relevantes para todos os objetos que compõem esta classe Classe Porta Atributos cor altura largura fechadura Funcionalidades abrir-se fechar-se 29 Exemplos • Seja o objeto resultante de uma abstração da porta de uma sala, ou seja, um objeto uma porta Objeto uma porta Atributos cor = azul altura = 2,10 m largura = 0,90 m fechadura = “objeto da classe das fechaduras” Funcionalidades abrir-se fechar-se 30 Exemplos • Seja a definição abstrata de uma classe Aluno de uma determinada disciplina • Considerando que o sistema de avaliação em uma disciplina seja por uma prova escrita, os atributos e serviços deste objeto seriam Classe Aluno Atributos nome do aluno matrícula nota prova Funcionalidades estudar assistir aula realizar prova 31 Exemplos • Seja a definição de um objeto um aluno da classe Aluno definida anteriormente Objeto um aluno Atributos nome do aluno = Maria matrícula = 12345678 nota prova = 9,0 Funcionalidades estudar assistir aula realizar prova 32 Exemplos Objeto meu relógio Atributos Formato Cor Peso A Pulseira Os Ponteiros A Pilha Métodos arredondado amarela 30 gramas outro objeto outro objeto outro objeto Iniciar marcação de horas Informar horas Corrigir horas Trocar pilha 33 Exemplos Objeto meu relógio Atributos Formato Cor Peso A Pulseira Os Ponteiros A Pilha Métodos arredondado amarela 30 gramas outro objeto outro objeto outro objeto Iniciar marcação de horas Informar horas Características de Corrigir horas qualquer objeto da Trocar pilha Classe Relógio 34 Exemplos Objeto meu relógio Atributos Formato Cor Peso A Pulseira Os Ponteirosoutro A Pilha arredondado amarela 30 gramas outro objeto objeto outro objeto Características do Métodos Iniciar marcação de horas meu Informar relógio em horas particular Corrigir horas Trocar pilha 35 Exemplos Objeto meu relógio Funcionalidade de arredondado qualquer amarelaobjeto da Classe Relógio 30 gramas Atributos Formato Cor Peso A Pulseira outro objeto Os Ponteirosoutro objeto A Pilha outro objeto Métodos Iniciar marcação de horas Informar horas Corrigir horas Trocar pilha 36 Exemplos Objeto meu relógio Atributos Formato Cor Peso A Pulseira Os Ponteirosoutro A Pilha Métodos arredondado amarela 30 gramas outro objeto objeto outro objeto Iniciar marcação de horas Informar horas Corrigir horas Outros objetos Trocar pilha que ajudam a compor um objeto da Classe Relógio 37 Objetos – Representação Visual meu relógio Objeto com outros objetos agregados Representação simples meu relógio os ponteiros a pulseira Objeto composto a pilha 38 Objetos • Um objeto é um elemento do programa que, após ser criado através da execução de determinados comandos pelo computador, passa a ocupar um espaço na memória • Todo objeto deve ter uma identificação (nome) • Os atributos são as características de composição de um objeto e definem sua estrutura • Atributos – valores simples ou outros objetos – podem mudar durante a vida do objeto 39 Objetos • As ações, serviços realizados ou comportamento dos objetos, serão chamados de métodos • Devemos imaginar que um objeto é algo que tem vida própria e que tenha capacidade de realização de ações mesmo quando este objeto tratar-se da abstração de algo inanimado ou abstrato 40 Sobre Objetos e suas Classes • Objetos de uma certa classe têm atributos – Uma conta tem um número, um saldo, um histórico de transações – Um cliente tem um nome, um endereço – Um cheque tem um valor • Objetos de uma mesma classe têm um mesmo comportamento – Clientes entram numa agência – Clientes fazem depósitos e saques – Clientes emitem cheques 41 Classes • Há simplificações no comportamento dos objetos em relação ao mundo real – Por vezes não é interessante modelar todo o comportamento dos objetos • Exemplo: clientes tomam café no mundo real mas provavelmente não na classe Cliente – Os comportamentos freqüentemente são assumidos por objetos diferentes • Exemplo: no mundo real, quem faz um depósito numa conta? Um cliente • Nos programas, qual classe assumiria a responsabilidade de fazer um depósito? A classe conta 42 Classes • Alguns objetos não têm comportamento – Contas não são vivas: não "fazem" nada • Objetos podem estar relacionados – Um cliente pode possuir várias contas • Objetos podem pertencer a mais de uma classe – João, que pertence a classe Cliente, pode pertencer também a classe Estudante • Para ler mais sobre o assunto – www.inf.ufsc.br/poo/conceitos 43 Representação da Classe Nome da Classe Relogio -String -String -String -Pulseira -Ponteiro -Pilha formato cor peso apulseira osponteiros apilha + iniciarMarcacaoDeHoras + informarHoras + corrigirHoras + trocarPilhas Atributos Atributos que correspondem a objetos de outras classes Métodos 44 Representação da Classe Relogio -String -String -String -Pulseira -Ponteiro -Pilha formato cor peso apulseira osponteiros apilha +iniciarMarcacaoDeHoras +informarHoras +corrigirHoras +trocarPilhas Nessa disciplina daremos especial atenção a Construção de Métodos 45 Métodos • Um Objeto presta um serviço executando algum Método especificado em sua classe • Um mesmo serviço poderá ser executado de várias formas, mas por enquanto assumiremos que cada Serviço corresponderá a um Método • Denominação: – Serviço para a ação do objeto – Método para a forma como a ação será executada • Inicialmente veremos a construção de um método como a construção de um programa 46 A Plataforma Java • Uma plataforma é o ambiente de hardware e software onde um programa é executado • A Plataforma Java é definida por: – APIs Java – Máquina Virtual Java 47 A Linguagem Java – Simples – Orientada a Objetos – Distribuída – Portável – Robusta – Segura – Interpretada – Independente de arquitetura – Alta performance – Dinâmica 48 Linguagens de Programação • Linguagens de máquina – Instruções para comandar a execução de operações primitivas – Exemplos • somar dois números • comparar dois números • transferir dados entre a memória e os registradores do processador ou entre a memória e os dispositivos de E/S – Primeiras linguagens • instruções escritas de forma primitiva • cada instrução era formada por uma dezena de bits • trabalhosa e muito sujeita a erros 49 Linguagens de Programação • Linguagens de montagem – Programadores passaram a usar nomes para as operações e dados – Exemplos • MOV R1,X • ADD R1, R2 – Programas eram escritos desta forma e “traduzidos” manualmente para linguagem de máquina para ser carregado e executado – Transferido para o computador a tarefa de “montar” o programa em linguagem de máquina – Programa montador traduz da linguagem de montagem para a linguagem de máquina 50 Linguagens de Programação • Linguagens de máquina e linguagens de montagem: linguagens de baixo nível • Linguagem de programação de alto nível – conjunto rico de instruções sintáticas, adequadas para expressar algoritmos usados para a solução de problemas • Para que um programa em linguagem de alto nível possa ser executado pelo computador ele precisa ser traduzido para um programa em linguagem de máquina • Esta tradução é denominada “compilação” e o programa que faz esta tarefa é o compilador 51 O Processo de Compilação • Um programa escrito segundo uma linguagem de programação é chamado de programa fonte ou código fonte • Para que este programa fonte possa ser executado por um computador ele deve ser traduzido para outra linguagem compreendida pelo computador – atividade realizada por um compilador • O resultado do processo de compilação é denominado programa objeto ou código objeto 52 O Processo de Compilação Programa Fonte Compilação Há erros? Não Sim Programa Objeto indicação dos erros a serem corrigidos 53 O Processo de Execução • O programa objeto é que será executado pelo computador para gerar os resultados esperados Programa Objeto Execução Resultados 54 O Processo de Interpretação • Processo diferente da compilação/ execução: interpretação de programas fonte • Interpretador interpreta diretamente cada comando de um programa fonte, simulando sua execução sobre os dados fornecidos para o interpretador • Interpretação de programas escritos em uma determinada linguagem define uma “máquina virtual” na qual é realizada a execução de instruções desta linguagem • Processo pode ser centenas de vezes mais lento do que a execução de um código objeto 55 O Processo de Interpretação • Vantagem: mais fácil construir um interpretador do que um compilador • Aspecto que foi explorado pelos projetistas da linguagem Java no desenvolvimento de ambientes para programação e execução de programas • Estes ambientes são baseados em uma combinação de processos de compilação e interpretação 56 A Linguagem Java • Um ambiente de programação Java é constituído de um compilador Java que gera um código de mais baixo nível denominado bytecode • O bytecode é então interpretado • Um interpretador de bytecodes interpreta as instruções da chamada “Máquina Virtual Java” (JVM) • Este esquema, além de outras vantagens, contribuí para facilitar a implementação da linguagem em um grande número de computadores diferentes 57 Ambientes de Programação • Além de compiladores e interpretadores um ambiente de programação de uma linguagem de alto nível oferece, em geral, um conjunto de bibliotecas de componentes ou módulos de programas usados no desenvolvimento de programas • Além disso incluem ferramentas para uso e desenvolvimento de programas como editores de texto e depuradores de programas • Em um ambiente de programação integrado todos estes componentes são oferecidos no mesmo programa 58 IDEs • IDE é a sigla de Integrated Development Environment, ou Ambiente Integrado de Desenvolvimento • Usaremos JCreator • Outras IDEs que podem ser utilizadas • • • • • Eclipse (www.eclipse.org) NetBeans (www.netbeans.org) Gel (www.gexperts.com) JEdit (www.jedit.org) OptimalJ (www.compuware.com/products/optimalj) 59