Anúncio
Anúncio

Mais conteúdo relacionado

Apresentações para você(20)

Anúncio

Último(20)

Anúncio

Programação OO - Java

  1. Programação OO Instituto Federal de Goiás Campus Luziânia Técnico Em Informática      ramirovictor3@gmail.com
  2. Introdução  Desde Aristóteles que o ser humano classifica os objetos do mundo;  Nossa mente é orientada a objetos;  Para desenvolver aplicações e componentes de qualidade em Java é preciso entender e saber aplicar princípios de orientação a objetos  Ao programar é possível escrever programas em Java sem saber usar os recursos da OO. Prof. Ramiro Victor 2
  3. Introdução  Orientação a objetos é a maneira de programar que ajuda na organização e resolve muitos problemas enfrentados pela programação procedural.  Escrever programas computacionais que usem classes e objetos é chamado de Programação Orientada a Objetos ou POO. Prof. Ramiro Victor 3 Dados 1 Dados 2 Dados 3 Procedimento 1 Procedimento 1 Procedimento 1
  4. Introdução  A responsabilidade de realizar as operações nos dados está espalhada por todo o código;  É interessante poder concentrar essas responsabilidades em um lugar só, para não ter chances de esquecer isso, ou de haver inconsistência. Prof. Ramiro Victor 4
  5. Introdução  Para você dirigir um carro, alguém tem de projetar o carro;  No projeto do carro inclui o projeto do pedal acelerador para aumentar a velocidade do carro;  O pedal oculta os complexos mecanismos que realmente fazem o carro ir mais rápido;  Isso permite que as pessoas com pouca ou nenhum conhecimento de como os motores funcionam dirijam um carro facilmente. Prof. Ramiro Victor 5
  6. Introdução  Você não pode guiar os desenhos de engenharia de um carro.  Antes eles devem ser construídos a partir dos desenhos de engenharia que o descrevem;  Em Java, primeiro criamos uma unidade de programa chamado classe, e assim como não se pode dirigir um desenho de engenharia de um carro, não se pode usar uma classe sem antes ela ser construída  Uma classe construída é um objeto. Prof. Ramiro Victor 6
  7. Introdução  Ao dirigir um carro, o ato de pressionar o acelerador envia uma mensagem para o carro realizar uma tarefa;  De maneira semelhante, envia-se mensagens para um objeto.  Cada mensagem é conhecida como uma chamada de método que instrui um objeto a realizar uma tarefa. Prof. Ramiro Victor 7
  8. Introdução  Além das capacidades de um carro, ele também tem muitos atributos, como cor, número de portas, quantidade de gasolina, velocidade atual e total de quilômetros percorridos.  De maneira semelhante, um objeto tem atributos que são portados com o objeto quando ele é utilizado em um programa.  Os atributos são especificados pelas variáveis de instância da classe  Para melhor entendimento, vamos estudar um sistema bancário. Uma entidade muito importante neste sistema é a conta. Prof. Ramiro Victor 8
  9. Classe Prof. Ramiro Victor 9  Quais são as informações importantes para uma conta?  Número da conta;  Nome do dono;  Saldo;  Limite.  Quais as funcionalidades de uma conta  Sacar;  Depositar;  Imprimir o nome do dono;  Transferir uma quantidade x para outra conta.
  10. Atributos Prof. Ramiro Victor 10  Declarando a classe e os atributos: public class Conta { int num; String nome; double saldo; double limite; // Métodos }
  11. Métodos Prof. Ramiro Victor 11  Declarando os métodos public class Conta { // atributos void saca(double valor){} void deposita(double valor){} void imprime(){} double saldo(){} boolean transfere(Conta destino, double valor){} String tipoConta(){} }
  12. Instanciando um objeto Prof. Ramiro Victor 12  Declarando os métodos public class Programa { public static void main (String[] args) { Conta minhaConta; minhaConta = new Conta(); } }
  13. Referência a Memória Prof. Ramiro Victor 13  Quando declaramos uma variável para associar a um objeto, na verdade essa variável não guarda o objeto, e sim uma maneira de acessá-lo, chamada de referência; public class Programa { public static void main (String[] args) { Conta minhaConta = new Conta(); Conta suaConta = new Conta(); } }
  14. Referência a Memória Prof. Ramiro Victor 14  Quando instanciamos uma Conta, nessa situação “minhaConta”, refere-se a um objeto que está na memória;  Lembrar, uma variável nunca é um objeto. minhaConta suaConta
  15. Referência a Memória Prof. Ramiro Victor 15 public class Programa { public static void main (String[] args) { Conta minhaConta = new Conta(); Conta suaConta = new Conta(); minhaConta = suaConta; } } minhaConta suaConta
  16. Conceitos Fundamentais 02/08/18Prof. Ramiro Victor 16  O que é um objeto?  “É a representação de uma coisa do mundo real.” (BARNES,2009)  Exemplos:  O carro vermelho que está ali no estacionamento.  Este lápis na minha mão. OBJETO = DADOS + OPERAÇÕES
  17. Objeto • Objeto é qualquer entidade do mundo real que apresente algum significado. • Mesmo que tal entidade não se constitua em algo concreto. Prof. Ramiro Victor 17
  18. Conceitos Fundamentais Prof. Ramiro Victor 18  Objetos Possuem:  Estado:  Representado pelos valores dos atributos de um objeto  Comportamento:  Definido pelo conjunto de operações (métodos) do objeto;  Estado representa o resultado cumulativo de seu comportamento;  Identidade:  Dois objetos são distintos mesmo que os valores de seus atributos sejam exatamente iguais.
  19. Conceitos Fundamentais Prof. Ramiro Victor 19  O que é uma classe?  “É um projeto de um objeto. Ela informa como cria um objeto de um tipo específico.” (SIERRA & BATES, 2007)  Classe  É onde conceituamos o objeto  É a essência do objeto  Define os atributos e métodos  Objeto  É a instância de uma classe  Objetos semelhantes pertencem a uma mesma classe
  20. Conceitos Fundamentais Prof. Ramiro Victor 20  Atributos  Atributos são as propriedades de um objeto  Exemplo:  Um objeto carro pode ter que propriedades?  Cor  Modelo  Marca  Potência do motor  Quantidade de portas  Velocidade atual  Etc..
  21. Classe • Uma classe representa um grupo de objetos com características e comportamentos comuns e compõem-se, basicamente, de atributos e métodos. • As classes de programação são receitas de um objeto, aonde têm características e comportamentos, permitindo assim armazenar propriedades e métodos dentro dela. Prof. Ramiro Victor 21
  22. Conceitos Fundamentais Prof. Ramiro Victor 22  Métodos  Métodos são as ações que um objeto pode realizar  Exemplo:  Um objeto carro pode realizar que ações?  Acelerar  Frear  Buzinar  Etc.
  23. Conceitos Fundamentais Prof. Ramiro Victor 23  Como representamos uma Classe?  Através da UML (Unified Modeling Language)  Retângulo com três divisões:  Nome da Classe  Atributos  Métodos (ações).
  24. Conceitos Fundamentais Prof. Ramiro Victor 24  O que são Instâncias?  Chamamos de instância, cada objeto criado a partir de uma classe.
  25. Conceitos Fundamentais Prof. Ramiro Victor 25  Se definirmos o objeto Pessoa, que atributos ela pode ter?  E em relação aos métodos?
  26. Modificadores de acesso Prof. Ramiro Victor 26
  27. Modificadores de acesso Prof. Ramiro Victor 27  Os modificadores de acesso controlam às variáveis e métodos de uma classe;  Isto evita a inconsistência nos valores nos objetos.  Os modificadores de acesso mais usados são:  private  Public  Protect  Default
  28. Modificadores de acesso Prof. Ramiro Victor 28  Quando um atributo ou método é privado, fechamos o acesso ao mesmo em relação a todas as outras classes;  Isto é, não são diretamente acessíveis fora da classe.  Cada classe é responsável por gerenciar seus atributos. Ela é que julga se é pertinente ou não um determinado valor. Esta validação não deve ser realizada por quem está usando a classe.  Já o public, permite que todas as classes do sistema acessem determinados atributos e métodos.
  29. Modificadores de acesso Prof. Ramiro Victor 29 public class Empregado{ private String primeiroNome; private String ultimoNome; private float salario; public float calculaPassagem(){ } }
  30. Modificadores de acesso Prof. Ramiro Victor 30 Visibilidade Public Protected Package (Default) Private A partir da mesma classe Sim Sim Sim Sim A partir de qualquer classe do mesmo pacote Sim Sim Sim Não A partir de uma subclasse do mesmo pacote Sim Sim Sim Não A partir de uma subclasse de fora do mesmo pacote Sim Sim, através da herança Não Não A partir de qualquer classe que não seja uma subclasse e que esteja fora do pacote Sim Não Não Não
  31. Modificadores de acesso Prof. Ramiro Victor 31  É muito comum que os atributos de uma classe sejam private e os seus métodos sejam public.  Toda interação entre os objetos se dá através da troca de mensagens através de seus métodos.  Estes são os fundamentos básicos do encapsulamento, esconder o modo de operação de uma classe, deixando apenas disponível os métodos que trocam mensagens (interface da classe) com as outras classes.
  32. Modificadores de acesso - UML Prof. Ramiro Victor 32 Modificador Representação Public + Private - protected # Package (defaulf) ~
  33. Atributos e Métodos da Classe Prof. Ramiro Victor 33  Vimos até agora que atributos e métodos pertencem aos objetos:  Não se faz nada sem antes criar um objeto (new)!  No entanto, há situações que você quer usá-los sem ter que criar objetos:  Deseja-se um atributo associado a uma classe como um todo (todos os objetos compartilham a mesma variável, similar a uma “variável global”);  Deseja-se chamar um método mesmo que não haja objetos daquela classe criados.
  34. Atributos e Métodos Static Prof. Ramiro Victor 34  Usando a palavra-chave static você define um atributo ou método de classe (“estático”):  Atributo/método pertence à classe como um todo;  Pode-se acessá-los mesmo sem ter criado um objeto;  Objetos podem acessá-los como se fosse um membro de objeto, só que compartilhado;  O contrário não é possível: métodos static não podem acessar atributos/métodos não-static diretamente (precisa criar um objeto).
  35. Construtores Prof. Ramiro Victor 35  Quando criamos objetos, podemos querer inicializá-lo com alguns valores;  Quando um novo objeto é criado:  1º é alocada memória para o objeto;  2º o construtor é chamado.  Você não pode criar um objeto sem chamar um construtor.  Se definidos argumentos, devem ser passados na criação do objeto com new.  Nossas classes podem ter quantos construtores quisermos (com assinaturas diferentes)
  36. Construtores Prof. Ramiro Victor 36  O nome do construtor deve coincidir com o nome da classe  Os construtores não devem ter um tipo de retorno  O construtor padrão será sempre um construtor sem argumentos  Os construtores podem utilizar qualquer modificador de acesso, inclusive private;  Se você não inserir um construtor no código de sua classe, um construtor é utilizado.
  37. Método construtor - Exemplo Prof. Ramiro Victor 37
  38. Método construtor - Exemplo Prof. Ramiro Victor 38
  39. Sobrecarga de Métodos Prof. Ramiro Victor 39  Os métodos sobrecarregados permitirão que você reutilize o mesmo nome de método em uma classe, mas com argumentos diferentes (e opcionalmente, com um tipo de retorno diferente).  Os métodos sobrecarregados devem alterar a lista de argumentos  Os métodos sobrecarregados podem alterar o tipo de retorno  Os métodos sobrecarregados podem alterar o modificador de acesso  A decisão sobre qual dos métodos coincidentes chamar será baseada nos argumentos
  40. A palavra reservada this Prof. Ramiro Victor 40  this pode ser usado para diferenciar um atributo do objeto de um parâmetro do método: public class Num { private int i = 5; public void somar(int i) { this.i+= i; } }
  41. This • This é usado para fazer auto-referência ao próprio contexto em que se encontra. Resumidamente, this sempre será a própria classe ou o objeto já instanciado. Prof. Ramiro Victor 41
  42. Exercício Prof. Ramiro Victor 42  Faça uma classe Calculadora que realize as 4 operações matemáticas básicas (soma, divisão, multiplicação e subtração)  Cada método deve receber sobre dois valores (double) passados como parâmetros e retorne o resultado.  Crie uma classe que instancie um objeto do tipo calculadora e realize as 4 operações e imprima os resultados obtidos.
Anúncio