Baixe o app para aproveitar ainda mais
Prévia do material em texto
29/08/2019 1 LINGUAGEM DE PROGRAMAÇÃO II Aula 06 - Orientada a Objetos – Parte 01 Prof. Junio Figueiredo junioinf@gmail.com junioinf.wix.com/arquitetura mailto:junioinf@gmail.com 29/08/2019 2 Programação Orientada a Objetos POO Objetivos: oFundamentos do Objeto Como percebemos o mundo a nossa volta Como reconhecer um objeto O que é um objeto Classes e objetos oClasse e objetos Definição de classe Definição de objeto Identidade de um objeto 29/08/2019 3 Programação Orientada a Objetos POO O Porque da OO: oQuerer aproximar o mundo real do mundo virtual oModelar os aspectos existentes do mundo real e colocá-los em forma de bits e bytes para serem processados e simulados em computadores oMas, para tanto, é necessário compreender melhor o mundo a nossa volta 29/08/2019 4 Programação Orientada a Objetos POO Como percebemos o mundo a nossa volta? oO ser humano é capaz de perceber o mundo a sua volta, graças aos cincos sentidos que ele forma ao longo da vida: Audição, Visão, Paladar, Tato e Olfato oPara se ter uma ideia, antes mesmo de nascermos, já começamos a interagir com o mundo externo 29/08/2019 5 Programação Orientada a Objetos POO Como reconhecer um objeto ? oO mundo a nossa volta é composta por padrões oCom o tempo somos capazes de reconhecer oPela incrível capacidade de aprendizado de nosso cérebro oMaturidade 29/08/2019 6 Programação Orientada a Objetos POO Então, o que seria um objeto ? oPodemos considerar que um objeto é algo que: oPossui características oApresenta um comportamento oApresenta um determinado estado em um determinado momento 29/08/2019 7 Programação Orientada a Objetos POO Então, o que seria um objeto ? o As características de um objeto oCor oPeso oTamanho o Identidade oCPF o etc oAs características de um objeto, diz o que o objeto é 29/08/2019 8 Programação Orientada a Objetos POO Então, o que seria um objeto ? o As comportamento de um objeto oCorrer oAndar oLigar o Subir oAbrir oO comportamento detalha o que objeto faz 29/08/2019 9 Programação Orientada a Objetos POO Então, o que seria um objeto ? O que é ? 29/08/2019 10 Programação Orientada a Objetos POO Então, o que seria um objeto ? o Faz parte da natureza humana classificar objetos parecidos; isto é, objetos com as mesmas características e comportamentos são classificados com um nome genérico que os representa 29/08/2019 11 Programação Orientada a Objetos POO Então, o que seria um objeto ? o Perceba que, para exemplificar as características de um objeto, utilizamos apenas SUBSTANTIVOS o Nome o Tamanho o Cor o Para exemplificar o comportamento, utilizamos apenas VERBOS As comportamento de um objeto o Correr o Andar o Ligar o Subir o Abrir 29/08/2019 12 Programação Orientada a Objetos POO Então, o que seria um objeto? oÀs vezes, a falta de conhecimento pode acarretar interpretações erradas sobre um objeto. oÉ como uma criança, que ao ver um pônei, imagina que é um cavalo pequeno oSabemos que são raças distintas oA maturidade e a experiência do processo cognitivo de nosso cérebro podem ser cruciais na interpretação do mundo a nossa volta 29/08/2019 13 Programação Orientada a Objetos POO Fundamentos 29/08/2019 14 Programação Orientada a Objetos POO Fundamentos oNa POO, há dois conceitos bem distintos, mas que deixam muita gente confusa na hora de descrever o significado e as diferentes conceitos de cada um dele oClasse oObjeto 29/08/2019 15 Programação Orientada a Objetos POO Fundamentos oA classe é a ideia do seria um objeto, a descrição de uma pré-classificação. oJá o objeto é o real, o que existe, que segue as ideias definidas acerca daquele objeto 29/08/2019 16 Programação Orientada a Objetos POO Fundamentos 29/08/2019 17 Programação Orientada a Objetos POO Definição de Classe oJá temos a noção do que venha ser Classes e Objeto oVamos falar de POO oComo o próprio nome diz, o objeto é a base da Programação Orientada a objetos 29/08/2019 18 Programação Orientada a Objetos POO Definição de Classe oMas, antes de criarmos um objetos, é necessário saber como ele é, devemos primeiramente classificá-lo. oClassificar um objeto é definir quais são as características e os comportamentos inerentes a esses objetos oOs objetos com as mesmas característica e comportamentos que podem ser considerados de uma mesma classe 29/08/2019 19 Programação Orientada a Objetos POO Atividade oQ1. Cite 3 exemplos de classes baseados no contexto de uma sala de aula e, para cada uma delas, cite pelo menos 3 objetos que obedecem a essa classificação oQ2. Para cada classe exemplificada no exercício anterior, defina pelo menos 3 características e 3 comportamentos 29/08/2019 20 Programação Orientada a Objetos POO Atividade oQ1. No contexto da sala de aula: oAluno ( Joao – José – Maria ) oProfessor ( Ana - Roberto – Paula) oCurso (Jogos – Informática – Redes ) oDisciplina ( Programação – 3D – 2D) 29/08/2019 21 Programação Orientada a Objetos POO Atividade oQ2. Características são o que identificam o objeto oAluno ( matricula – nome – idt - cpf ) oProfessor ( idt – nome – titulação ) oDisciplina ( idt – nome – ch ) o Comportamentos o que o objeto pode realizar “Ações” oAluno ( Responder chamada, Realizar exercícios, Tirar duvidas ) oProfessor ( Ensinar – Tirar Duvidas – Aprovar ) 29/08/2019 22 Programação Orientada a Objetos POO Identidade de um objeto oOs objetos são únicos, só existe um de cada objeto no mundo, pode haver vários parecidos com eles, até mesmo idênticos (mesma marca e modelo ), mas ainda continuam sendo únicos oA identidade de um objeto é uma das características inerentes a ele : só pode haver um único objeto. 29/08/2019 23 Programação Orientada a Objetos POO 29/08/2019 24 Programação Orientada a Objetos POO Para exemplificar, vamos imaginar a classe 29/08/2019 25 Programação Orientada a Objetos POO A classe "Carro" do mundo real, vamos trazer para o mundo virtual. oUm carro tem rodas, opneus, o lanternas, oportas, omotor, opára-choque, oetc. 29/08/2019 26 Programação Orientada a Objetos POO Algumas perguntas. oQual é o modelo do carro? oQual é a cor do carro? oQual é a marca dos pneus? oAs lanternas estão ligadas? oO motor do carro está funcionando? oNão sabemos! oNa verdade, não é possível responder essas perguntas, pois ao pensar na classe "Carro", onós definimos apenas o que o carro pode ter e o que ele faz, e não o que realmente ele é. 29/08/2019 27 Programação Orientada a Objetos POO Para ficar mais claro, pense como se não existissem carros no mundo. Você é o grande inventor dos carros! Como qualquer invenção, você precisará fazer algum desenho, escrever um rascunho, criar algum projeto ou apenas formar uma ideia em sua cabeça de como "a coisa" deve funcionar. 29/08/2019 28 Programação Orientada a Objetos POO Ao criar a classe "Carro", precisamos pensar em o que a classe deve ter (características/ propriedades) e o que ela poderá fazer (comportamentos/ações). Devemos pensar apenas no essencial para que o problema que estamos tentando resolver seja solucionado (Abstração). 29/08/2019 29 Programação Orientada a Objetos POO Vamos entender Abstração. 29/08/2019 30 Programação Orientada a Objetos POO Abstração oÉ a habilidade inerente ao ser humano de concentrar nos aspectos essenciais de um problema, ignorando as característicasque não são importantes para a solução. oNo contexto da orientação a objetos, uma classe é uma abstração de conceitos do mundo real uma vez que não precisamos recriar todas as características do individuo real, modelamos aquelas que são importantes para o nosso sistema oAbstração = Descrição 29/08/2019 31 Programação Orientada a Objetos POO Abstração oNecessidade de maior aproximação entre sistemas de informação e o mundo real. oO ser humano pensa em objetos. Ex:.Carro. ◦ 4 rodas no mínimo. ◦ 2 portas no mínimo. ◦ Farol. ◦ Freio. ◦ Anda. ◦ Transporta pessoas. Caracteristicas Operações 29/08/2019 32 Programação Orientada a Objetos POO Abstração oQuais as características de uma lâmpada? oQuais as ações/comportamentos de uma lâmpada? Potência (25, 40, 60, 100,250–em watts) Cor (amarela, branca) Tipo (incandescente, led, fluorescente) Acender Apagar 29/08/2019 33 Programação Orientada a Objetos POO Abstração oÉ utilizada para a definição de entidades do mundo real. oSendo onde são criadas as classes. oEssas entidades são consideradas tudo que é real, tendo como consideração as suas características e ações 29/08/2019 34 Programação Orientada a Objetos POO Abstração oSempre dependerá do CONTEXTO, ou seja, do PONTO DE VISTA; ◦ Deve enfatizar as características essenciais do problema e o projetista deve: ◦ Considerar essas características sob o ponto de vista de quem necessita da solução 29/08/2019 35 Programação Orientada a Objetos POO Abstração Visão do mundo real: ◦ Estamos acostumados a sempre abstrair dos objetos aquilo que nos interessa. 29/08/2019 36 Programação Orientada a Objetos POO Abstração 29/08/2019 37 Programação Orientada a Objetos POO Abstração 29/08/2019 38 Programação Orientada a Objetos POO Abstração - Resumo Levar em consideração ◦ Aspectos relevantes Descartar os: ◦ Aspectos irrelevantes Objetivo: ◦ Reduzir a complexidade do problema; 29/08/2019 39 Programação Orientada a Objetos POO Domínio e Aplicação oUm domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. oUma aplicação pode ser desenvolvida para automatizar ou tornar factível as tarefas de um domínio o Portanto, uma aplicação é basicamente o “reflexo” de um domínio o 29/08/2019 40 Programação Orientada a Objetos POO Domínio e Aplicação Exemplo oUm Aplicação para facilitar as tarefas do cotidiano de um banco Identificar • Clientes • Funcionários • Agências • Contas Entidades Do Domínio Obs. Também podemos identificar as informações e os processos relacionados a essas entidades. 29/08/2019 41 Programação Orientada a Objetos POO Objetos, Atributos e Métodos Representação das Entidades ◦ Nas aplicações orientadas a objeto as entidades são representadas como objetos Observação ◦ Uma aplicação orientada a objetos é composta por objetos ◦ Em geral, um objeto representa uma entidade do domínio 29/08/2019 42 Programação Orientada a Objetos POO Exemplo ◦ Domínio Banco Cliente chamado João ◦ Aplicação Orientada a Objetos Possuir um objeto para representar o cliente oOs objetos da aplicação devem possuir as informações mais relevantes das entidades do domínio. - Cliente João - Objeto • Nome Nome • Data nascimento Informações Data Nascimento Atributos • Sexo Sexo 29/08/2019 43 Programação Orientada a Objetos POO Atributos ◦ Um atributo é uma variável que pertence a um objeto. ◦ Os dados de um objeto são armazenados nos seus atributos O próprio objeto deve realizar operações de consulta ou alteração dos valores de seus atributos. ◦ Essas operações são definidas nos métodos do objeto. ◦ Os métodos também são utilizados para possibilitar interações entre os objetos de uma aplicação. Atributos = Dados Métodos = Ações 29/08/2019 44 Programação Orientada a Objetos POO Métodos As tarefas que um objeto pode realizar são definidas pelos seus métodos. Um objeto é composto por atributos e métodos 29/08/2019 45 Programação Orientada a Objetos POO Voltando de onde paramos!!! 29/08/2019 46 Programação Orientada a Objetos POO Ao criar a classe "Carro", precisamos pensar em o que a classe deve ter (características/ propriedades) e o que ela poderá fazer (comportamentos/ações). Devemos pensar apenas no essencial para que o problema que estamos tentando resolver seja solucionado (Abstração). 29/08/2019 47 Programação Orientada a Objetos POO Por exemplo, podemos pensar que o carro deve ter: o Fabricante o Modelo o Cor o Tipo de combustível o Ano de fabricação o Valor de mercado 29/08/2019 48 Programação Orientada a Objetos POO E agora os comportamentos do carro (o que ele pode fazer): o Ligar o Desligar o Mudar de macha o Acelerar o Frear 29/08/2019 49 Programação Orientada a Objetos POO Agora já temos a classe "Carro", mas ainda não podemos: ◦ Ligar ◦ acelerar ◦ frear um carro, ◦ saber o fabricante ◦ modelo ◦ cor dele pois ainda não existe um carro. Tudo que existe é uma ideia de um carro, uma especificação! 29/08/2019 50 Programação Orientada a Objetos POO Nós podemos construir um ou vários carros a partir da classe "Carro", e isso se chama instanciação, na orientação a objetos. Quando usamos a classe para instanciar algo, o resultado final é um objeto do tipo da classe. 29/08/2019 51 Programação Orientada a Objetos POO 29/08/2019 52 Programação Orientada a Objetos POO Um objeto nada mais é que uma instância particular de um tipo de dado específico (classe), ou seja, em outras palavras, objeto é uma entidade, do mundo computacional, que representa uma entidade do mundo real especificamente. Os objetos possuem : ◦ estados (atributos ou propriedades), ◦ comportamentos (métodos ou ações) e ◦ identidade (cada objeto é único). O objeto que "instanciamos mentalmente" (pois ainda não estamos programando) é um HB20 da Hyundai, tem cor prata send, bicombustível e podemos pisar no acelerador e sair passeando por aí. 29/08/2019 53 Programação Orientada a Objetos POO O HB20 que instanciamos é único no mundo! Podem existir outros muito parecidos (praticamente iguais), mas o carro da imagem acima tem uma ◦ identidade única, ◦ um chassi único, ◦ um único dono (ou dona), ◦ e o estado atual dele é só dele e de mais nenhum outro. 29/08/2019 54 Programação Orientada a Objetos POO instância instância 29/08/2019 55 Programação Orientada a Objetos POO Classe Classe Objetos Objetos Objetos Memória 29/08/2019 56 Programação Orientada a Objetos POO Classe oAntes de um objeto ser criado, devemos definir quais serão os seus atributos e métodos. oEssa definição é realizada através de uma classe elaborada por um programador. oA partir de uma classe, podemos construir objetos na memória do computador que executa a nossa aplicação oEm Java, objetos são armazenados na memória de heap e manipulados através de uma referência (variável), guardada na pilha. 29/08/2019 57 Programação Orientada a Objetos POO 29/08/2019 58 Programação Orientada a Objetos POO 29/08/2019 59 Programação Orientada a Objetos POO Classes oSão definições de atributos e funções de um tipo de objetos oIdentifica um grupo de objetos com as mesmas características oÉ uma estruturaque define como vai ser o objeto oDefine o comportamento de seus objetos através de métodos oDefine os estados possíveis destes objetos através de atributos oObjetos são instâncias de classes 29/08/2019 60 Programação Orientada a Objetos POO Classes oRepresenta uma categoria, um grupo de objetos com as mesmas características 29/08/2019 61 Programação Orientada a Objetos POO Classes 29/08/2019 62 Programação Orientada a Objetos POO Classes 29/08/2019 63 Programação Orientada a Objetos POO Criando uma classe com atributos 29/08/2019 64 Programação Orientada a Objetos POO O código Java fica da seguinte forma: class Carro { String fabricante; String modelo; String cor; String tipoCombustivel; int anoDeFabricacao; double valorDeMercado; } 29/08/2019 65 Programação Orientada a Objetos POO Os atributos são variáveis com o escopo do objeto. Eles são acessíveis e estão disponíveis enquanto o objeto "possuir vida", e são iniciados durante a criação de seu objeto. Neste caso, podemos chamá-los de variáveis de instância, pois só existirão valores para as variáveis quando existirem objetos (instâncias). 29/08/2019 66 Programação Orientada a Objetos POO Os tipos dos atributos podem ser do tipo: ◦ primitivo (como int, double, etc) ou ◦ Um tipo de classe. Por exemplo, String é uma classe (não é um tipo primitivo). Lembre-se que a classe Carro que acabamos de criar não representa nenhum carro real (objeto), mas apenas especifica como os carros devem ser quando forem instanciados. 29/08/2019 67 Programação Orientada a Objetos POO Classes 29/08/2019 68 Programação Orientada a Objetos POO Instanciando objetos 29/08/2019 69 Programação Orientada a Objetos POO Instanciando “Criando” Objeto oPara criar uma variável, é necessário apenas declará-la. oPara criar um objeto, é necessário: oDeclarar o Instanciar a classe (criar o objeto efetivamente) 29/08/2019 70 Programação Orientada a Objetos POO As 3 Etapas: Carro gol = new Carro(); o 1 – Declara uma variável de referência o 2 – Cria um objeto o 3 – Atribui o novo objeto Carro à variável de referência gol 1 3 2 29/08/2019 71 Programação Orientada a Objetos POO Referência Todo objeto possui uma referência. A referência de um objeto é a única maneira de acessar os seus atributos e métodos. 29/08/2019 72 Programação Orientada a Objetos POO Referência Ao utilizar o comando New um objeto é alocado em algum lugar da memória. Para que possamos acessar esse objeto, precisamos de sua referência. O comando new devolve a referência do objeto que foi criado. Guardando a Referência ◦ Carro carro = new Carro(); Guarda uma referência para um objeto do tipo carro 29/08/2019 73 Programação Orientada a Objetos POO Referência null 0 0.0 carro Carro Fabricante ano valor class Point { float x, y; } Exemplo 2. Exemplo 1. Point p = new Point(); 0.0 0.0 p point x y 29/08/2019 74 Programação Orientada a Objetos POO 29/08/2019 75 Programação Orientada a Objetos POO Declaramos uma variável chamada meuCarro do tipo Carro e depois instancia um objeto do tipo Carro e atribui à variável meuCarro. Usamos uma palavra new para indicar que desejamos instanciar um novo objeto do tipo Carro. As variáveis não guardam os objetos, mas sim uma referência para a área de memória onde os objetos são alocados. Se criarmos duas instâncias da classe Carro e atribuirmos cada instância para variáveis diferentes, meuCarro e seuCarro, temos o código abaixo. Perceba que agora nós declaramos e instanciamos cada variável em apenas uma linha. 29/08/2019 76 Programação Orientada a Objetos POO 29/08/2019 77 Programação Orientada a Objetos POO dois objetos são instanciados e referenciados pelas variáveis de nomes meuCarro e seuCarro. Os objetos instanciados são alocados na memória da máquina virtual Java, e os nomes de variáveis apenas apontam para esses objetos. 29/08/2019 78 Programação Orientada a Objetos POO 29/08/2019 79 Programação Orientada a Objetos POO Você pode estar se perguntando agora: ◦ Qual é a cor do carro? ◦ Qual é o preço de mercado? ◦ E o ano de fabricação? Como nós não atribuímos valores para essas variáveis, elas receberam valores padrão. Por exemplo, o ano de fabricação recebeu o valor 0, valor de mercado recebeu o valor 0.0 e todas as variáveis do tipo String receberam o valor null (que indica "nada", ou seja, sem referência). 29/08/2019 80 Programação Orientada a Objetos POO 29/08/2019 81 Programação Orientada a Objetos POO Manipulando Atributos Podemos alterar ou acessar os valores guardados nos atributos de um objeto se tivermos a referência desse objeto. Os atributos são acessados pelo nome. No caso específico da linguagem Java, a sintaxe para acessar um atributo utiliza o operador “.". 29/08/2019 82 Programação Orientada a Objetos POO Conta referecia = new Conta(); referecia.saldo = 1000.0; referecia.limite = 500.0; referecia.numero = 1; System.out.println(referecia.saldo); System.out.println(referecia.limite); System.out.println(referecia.numero); 29/08/2019 83 Programação Orientada a Objetos POO Atribuindo e Acessando atributos de objetos 29/08/2019 84 Programação Orientada a Objetos POO Mãos a obra 29/08/2019 85 Programação Orientada a Objetos POO Mãos a obra 29/08/2019 86 Programação Orientada a Objetos POO Mãos a obra - continuação 29/08/2019 87 Programação Orientada a Objetos POO Métodos 29/08/2019 88 Programação Orientada a Objetos POO Os comportamentos das classes são definidos através de métodos. Métodos são trechos de código que são referenciados por um nome e podem ser chamados por alguma outra parte do software através de seu nome. Os métodos podem receber argumentos (valores e objetos de entrada) e retornar um valor ou objeto para quem o chamou, ou não retornar nada. 29/08/2019 89 Programação Orientada a Objetos POO Podemos dividir um método em quatro partes: Nome: É utilizado para chamar o método. ◦ Na linguagem Java, é uma boa prática definir os nomes dos métodos utilizando a convenção “Camel Case” com a primeira letra minúscula. Lista de Parâmetros: Define os valores que o método deve receber. ◦ Métodos que não devem receber nenhum valor possuem a lista de parâmetros vazia. Corpo: Define o que acontecerá quando o método for chamado. Retorno: A resposta que será devolvida ao final do processamento do método. ◦ Quando um método não devolve nenhuma resposta, ele deve ser marcado coma palavra reservada void. 29/08/2019 90 Programação Orientada a Objetos POO Métodos *Programação Java Adicionar o método deposita, saca e consultaSaldoDisponível. 29/08/2019 91 Programação Orientada a Objetos POO Métodos Os métodos em Java podem conter letras, dígitos, _ (underscore) e $ (dólar), porém eles não podem ser iniciados por um dígito e não podem ser palavras reservadas. Veja alguns nomes de métodos válidos para o compilador Java: 29/08/2019 92 Programação Orientada a Objetos POO Métodos 29/08/2019 93 Programação Orientada a Objetos POO Métodos 29/08/2019 94 Programação Orientada a Objetos POO Classe Carro 29/08/2019 95 Programação Orientada a Objetos POO Método Simples: Sem Retorno e/ou Parâmentrovoid exibirAutonomia( ){ System.out.println(“A autonomia do carro é :” + capCombustivel * consumoCombustivel + “ KM”); } 29/08/2019 96 Programação Orientada a Objetos POO Mãos a obra 29/08/2019 97 Programação Orientada a Objetos POO Mãos a obra 29/08/2019 98 Programação Orientada a Objetos POO Métodos Classes e Métodos com Retorno 29/08/2019 99 Programação Orientada a Objetos POO Métodos com Retorno double obterAutonomia() { System.out.println("Método obter Autonomia foi chamado."); return capCombustivel * consumoCombustivel; 29/08/2019 100 Programação Orientada a Objetos POO Mãos a obra 29/08/2019 101 Programação Orientada a Objetos POO Mãos a obra 29/08/2019 102 Programação Orientada a Objetos POO Métodos Métodos com Parâmetros 29/08/2019 103 Programação Orientada a Objetos POO Métodos com Parâmetros – Utiliza quando a informação não estiver na Classe double calculaCombustivel(double km) { return km / consumoCombustivel; } 29/08/2019 104 Programação Orientada a Objetos POO Mãos a obra 29/08/2019 105 Programação Orientada a Objetos POO Mãos a obra – continuação.... 29/08/2019 106 Programação Orientada a Objetos POO Mãos a obra 29/08/2019 107 Programação Orientada a Objetos POO Mãos a obra – continuação... 29/08/2019 108 Programação Orientada a Objetos POO Perguntas & Duvidas
Compartilhar