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 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 3 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 4 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 5 6 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 7 Substituindo por sinônimos… Entidades por Objetos Categorias por Classes Características por Atributos Funcionalidades por Métodos 8 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 9 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... 10 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 11 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 12 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 13 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 14 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 15 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 16 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 17 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 18 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 19 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 20 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 21 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 22 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 23 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 24 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 25 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 26 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 27 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 28 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 29 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 30 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 31 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 32 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 33 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 34 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 35 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 36 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 37 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 38 Exemplo de Um Programa Exemplo de Um Programa class Carro { String marca; String cor; boolean motorEstado; void ligaMotor() { motorEstado = true; System.out.println("O motor foi ligado."); } void desligaMotor() { motorEstado = false; System.out.println("O motor foi desligado."); } void mostraAtributos() { System.out.println("O carro tem a cor " + cor + "e eh da marca " + marca); if (motorEstado == true) System.out.println("O motor jah estah ligado."); else { System.out.println("O motor estah desligado."); } } } Exemplo de Um Programa Bem, até agora criamos apenas a classe Carro. Precisamos criar também um objeto dessa classe. Em Java podemos fazer isso adicionando o método main à classe Carro e nele instanciando efetivamente um objeto da classe Carro (comando new). Exemplo de Um Programa public static void main (String args[]) { Carro meuCarro = new Carro(); // instancia o objeto meuCarro.marca = "Palio"; // inicia o atributo marca meuCarro.cor = "azul"; // inicia o atributo cor System.out.println("Mostrando os atributos:"); meuCarro.mostraAtributos(); //mensagem para o objeto System.out.println("---------"); System.out.println("Ligando o motor..."); meuCarro.ligaMotor(); //mensagem para ligar o carro System.out.println("Mostrando os atributos:"); meuCarro.mostraAtributos(); System.out.println("---------"); System.out.println("Desligando o motor..."); meuCarro.desligaMotor(); System.out.println("Mostrando os atributos:"); meuCarro.mostraAtributos(); } Exemplo de Um Programa Pronto, a tela deve exibir algo como: 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 44 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 45 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) 46