A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

PROGRAMAÇÃO ORIENTADA A OBJETOS

Apresentações semelhantes


Apresentação em tema: "PROGRAMAÇÃO ORIENTADA A OBJETOS"— Transcrição da apresentação:

1 PROGRAMAÇÃO ORIENTADA A OBJETOS
Prof. Carlos Marques

2 Lembrete Java é case sensitive, ou seja, palavras escritas com letras maiúsculas e minúsculas são diferentes, exemplo: public <> Public Public <> PUBLIC PUBLIC <> public

3 classes Servem de base para a criação dos objetos;
Os objetos instanciados (criados) através de uma classe terão todas as características que estiverem presentes na referida classe; Podem conter atributos (características / dados) e métodos (comportamentos / ações); São identificadas pela palavra class; São delimitadas por { e }; Toda classe pública (public) deve estar em um arquivo com o mesmo nome da classe e extensão .java;

4 classes Exemplo: public class Moto { }
São escritas com todas as letras minúsculas, exceto as primeiras letras de cada palavra que compõem o nome. Exemplos: Moto, MotoEletrica;

5 objetos São instâncias de uma classe; (variáveis que contém todas as características descritas em uma classe específica); Para criar um objeto fazemos assim: Moto moto1 = new Moto(); A primeira parte, antes do sinal de igual (Moto moto1) está declarando a variável moto1 do tipo Moto. Com isto a linguagem vai reservar um pedaço da memória para guardar os dados referentes a Moto e atribuir para este local o nome moto1;

6 objetos A segunda parte, depois do sinal de igual (new Moto()) está instanciando (criando) um objeto e colocando o conteúdo em moto1. Com isto agora a variável moto1 é um objeto e pode ser utilizada com todas as características de uma Moto; Para usar os atributos e métodos de um objeto basta utilizar o nome do objeto, acrescentando um ponto e em seguida utilizar o nome do atributo ou método, exemplo: moto1.cor = “Vermelha”;

7 atributos São as características que cada objeto da classe poderá ter;
São variáveis que armazenam informações sobre o objeto; São variáveis globais (declaradas fora dos métodos); Cada objeto da classe, apesar de ter o mesmo conjunto de atributos, poderá ter informações diferentes. Exemplo: A moto1 poderá ser da cor vermelha, enquanto que a moto2 poderá ser amarela;

8 atributos Exemplo: public class Moto { public int cor; }
São escritas com todas as letras minúsculas, exceto as primeiras letras de cada palavra (a partir da segunda palavra) que compõem o nome. Exemplos: moto1, motoEletrica1, motoEletrica2; Uma classe pode ter qualquer número de atributos, inclusive nenhum; Devem ser obrigatoriamente declarados dentro da classe;

9 métodos São os comportamentos que cada objeto da classe poderá ter;
São pedaços de código (instruções) que representam as ações que o objeto pode executar; Uma classe pode ter qualquer número de métodos, inclusive nenhum; Os métodos podem ou não receber parâmetros de entrada que servem como informações adicionais que o método necessita para realizar seu trabalho; Os métodos podem ou não retornar um valor, geralmente o resultado do seu processamento;

10 métodos Exemplo: public class Moto { public int cor;
public void imprimir() { ... }

11 métodos Os parâmetros de entrada são informados dentro dos parênteses;
Os parâmetros apresentam a mesma funcionalidade das variáveis, porém só têm seus valores definidos quando o método é invocado. Exemplo: public class Calculo { public void imprimirSoma(int a, int b) { System.out.println(a+b); }

12 métodos O retorno de um método é único, ou seja, pode-se no máximo retornar um valor; Antes do nome do método deve-se especificar o tipo do retorno, caso se escreva a palavra void significa que o método não tem retorno; No exemplo anterior o método calcula a soma e imprime o resultado na tela, porém não retorna nenhum valor para quem realizou a sua chamada.

13 métodos Outro exemplo: public class Calculo {
public int imprimirSoma(int a, int b) { return a + b; } Neste caso o método não está mais imprimindo o resultado. Ele apenas calcula o valor e retorna o mesmo para quem o chamou; Note a palavra reservada return indica o que será retornado;

14 Representação gráfica - classe
public class Moto { public String marca, modelo, cor; public int marcha; public void marchaAcima() { marcha++; } public void marchaAbaixo() { marcha--; } } Nome da classe Atributos Métodos Moto String marca String modelo String cor int marcha void marchaAcima() void marchaAbaixo()

15 encapsulamento O encapsulamento é uma forma de proteger algumas partes da classe e consequentemente do objeto, contra o acesso indevido; Imagine a classe Tela que tem os atributos largura e altura. Se qualquer parte do código puder alterar livremente estes atributos, pode acontecer de em algum momento, de forma incorreta, algum deles ser mudado para um valor negativo, o que geraria um erro, pois como a mesma poderia ser desenhada com um destes valores negativos; Para evitar isto é que existe o encapsulamento;

16 encapsulamento Podem ser encapsulados atributos e/ou métodos;
Para encapsular um atributo ou um método basta trocar a palavra public utilizada na sua declaração pela palavra private; Exemplo: public class Tela { private int largura; ... }

17 encapsulamento Quanto privamos um atributo ou um método, este não pode ser acessado externamente à classe, ou seja, somente a classe pode ter acesso ao elemento privado; Geralmente (mas não sempre) quando se tem o encapsulamento de um atributo, também são definidos os métodos get (getters) e set (setters) que possibilitam o acesso ao atributo em questão; Com isto garante-se que se alguma parte do código precisar alterar o conteúdo de um atributo privado, esta alteração poderá ser controlada pelo método set;

18 encapsulamento Quando se implementa o método set, não existe a obrigatoriedade de implementar o método get e, vice-versa; A implementação dos setters e getters vai depender da necessidade de acesso ao atributo; Os métodos setters são destinados a atribuição de valores aos atributos encapsulados; Os métodos getters são destinados a obtenção dos valores dos atributos encapsulados;

19 encapsulamento Exemplo: public class Tela { private int largura;
public void setLargura(int largura) { if (largura >= 0) { this.largura = largura; } public int getLargura() { return largura;

20 Método construtor Como o próprio nome diz, o método construtor é o responsável por construir o objeto; Toda vez que se escreve uma classe, a linguagem Java te fornece um método construtor de “brinde”; public class Carro { public Carro() { } public class Carro { }

21 Método construtor Então quando instanciamos (criamos) um objeto, estamos utilizando o método construtor; Carro carro = new Carro(); public class Carro { public Carro() { }

22 Método construtor O método construtor padrão fornecido pela linguagem apenas cria o objeto, sem processamentos adicionais, mas podemos criar métodos construtores que façam várias tarefas; Imagine uma tela onde deseja-se que ao criá-la sejam adicionados botões e outros componentes, então podemos fazer com o método construtor, além de criar o objeto, também se encarregue disto; Um outro exemplo de uso prático para um método construtor é a atribuição dos valores dos atributos já na criação do objeto;

23 Método construtor Imagine a classe abaixo e veja como seriam definidos os valores dos atributos sem usar o método construtor: Agora imagine se fosse necessário instanciar (criar) 50 objetos destes; public class Moto { public String marca, modelo, cor; public int marcha; } Moto moto1 = new Moto(); moto1.marca = “Honda”; moto1.modelo = “Titan”; moto1.cor = “Vermelha”; moto1.marcha = 1; Moto moto2 = new Moto(); moto2.marca = “Yamaha”; ...

24 Método construtor Facilitando as coisas: public class Moto {
public String marca, modelo, cor; public int marcha; public Moto(String marca, String modelo, String cor, int marcha){ this.marca = marca; this.modelo = modelo; this.cor = cor; this.marcha = marcha; } Moto moto1 = new Moto(“Honda”, “Titan”, “Vermelha”, 1); Moto moto2 = new Moto(“Yamaha”, “YBR-125”, “Preta”, 2); Moto moto3 = new Moto(“Suzuki”, “Gladius”, “Azul”, 3);

25 Método construtor Para a criação de um método construtor temos as seguintes regras: Deve ser público (public); Não deve especificar o tipo de retorno; Deve ter o mesmo nome da classe; (lembre-se case-sensitive) Toda vez que se escreve um método construtor em uma classe, aquele método que a linguagem lhe dava de “brinde” deixa de existir;

26 Sobrecarga de métodos Possibilidade de existirem dois ou mais métodos com o mesmo nome, na mesma classe; A diferenciação entre os métodos acontece através da tipagem (tipos) dos parâmetros de entrada; Não podem existir métodos com o mesmo nome e os parâmetros de entrada com tipos iguais e na mesma ordem;

27 Sobrecarga de métodos public class Calculo {
public int calcularSoma(int a, int b){ return a + b; } public int calcularSoma(int a, int b, int c){ return a + b + c; Calculo calculo = new Calculo(); int x = calculo.calcularSoma(5, 3); int y = calculo.calcularSoma(2, 3, 9);

28 Sobrecarga de métodos public void imprimir(String a, int b);
public void imprimir(int b, String a); public void imprimir(String a, int b, int c); public void imprimir(int a, int b, String c); public void imprimir(int x, String b); public void imprimir(String c, int a, int b); Não podem, pois repetem os tipos dos parâmetros na mesma ordem

29 HERANÇA Quando ouvimos falar em herança, podemos associar o termo a herança financeira, quando bens e/ou direitos, ou até dívidas são passadas de geração para geração. Também existe a herança genética que trata da passagem de características como a cor dos cabelos, dos olhos, etc, que são passadas de geração para geração; Em POO também existe a herança que é um recurso muito poderoso e útil, pois facilita em muito a criação e manutenção do código;

30 HERANÇA Imagine a classe Eletrodomestico:
public class Eletrodomestico { public boolean ligado = false; public void ligar() { ligado = true; } public void desligar() { ligado = false;

31 HERANÇA Agora imagine que você também vai precisar das classes Televisor, Radio e MicroOndas e claro, todas estas tem as mesmas características que temos em Eletrodomestico, ou seja, elas tem o estado/característica/atributo (ligado) e as ações/métodos (ligar e desligar); Será que teremos que escrever tudo novamente? A resposta é NÃO!!! Em POO se você começar a repetir códigos comece a desconfiar, provavelmente você estará errando; Mas como resolver então? HERANÇA é a palavra

32 HERANÇA Quando usamos herança, podemos reaproveitar o que já foi escrito em outra classe; Para que uma classe herde os atributos e métodos de outra classe basta utilizar a palavra reservada extends;

33 HERANÇA Exemplo: public class Televisor extends Eletrodomestico {...}
public class Radio extends Eletrodomestico {...} public class MicroOndas extends Eletrodomestico {...} Desta forma, todos os atributos e métodos existentes na classe Eletrodomestico estarão disponíveis nas classes Televisor, Radio e MicroOndas. Como se tivesse sido efetuado um Ctrl+C, Ctrl+V;

34 HERANÇA Os atributos e métodos que encontram-se escritos na própria classe são denominados declarados; Os atributos e métodos que não estão escritos na classe, mas que foram “repassados” por herança são denominados disponíveis; No Netbeans os atributos e métodos declarados aparecem em negrito; Atributos e métodos encapsulados são herdados, porém não podem ser utilizados; Atributos e métodos herdados são repassados para as subclasses;

35 HERANÇA Representação Gráfica Super classe (pai / mãe) Triângulo
Eletrodomestico boolean ligado void ligar() void desligar() Televisor Representação Gráfica Super classe (pai / mãe) Triângulo Quem repassa Sub classe (filho / filha) Sem triângulo Quem recebe Radio MicroOndas

36 HERANÇA Hierarquia de classes A é superclasse de B e D;
int x void y() void z() HERANÇA Hierarquia de classes A é superclasse de B e D; A é superclasse de B que é superclasse de C; B e D são subclasses de A; C é subclasse de B que é subclasse de A; C é subclasse de B e E – Herança múltipla – Java não implementa; D int r B C void w() E int p

37 HERANÇA Declarados: A  atributo x; métodos y e z B  C  método w
int x void y() void z() HERANÇA Declarados: A  atributo x; métodos y e z B  C  método w D  atributo r E  atributo p D int r B C void w() E int p

38 HERANÇA Disponíveis: A  atributo x; métodos y e z
int x void y() void z() HERANÇA Disponíveis: A  atributo x; métodos y e z B  atributo x; métodos y e z C  atributo x e p; métodos y, z e w D  atributos x e r; métodos y e z E  atributo p D int r B C void w() E int p

39 Redefinição de métodos
Eletrodomestico boolean ligado void ligar() void desligar() Quando deseja-se modificar algo em um método herdado, reescreve-se o método na classe filha; Um MicroOndas, ao contrário da maioria dos eletrodomésticos, não pode ser ligado se a porta estiver aberta, logo o método ligar herdado não serve e deve ser reescrito (redefinido); NetBeans pede para deixar a anotação Se quiser usar o método original, utilizar a palavra reservada super; As classes envolvidas devem fazer parte de uma herança; MicroOndas boolean portaFechada void ligar()

40 Redefinição de métodos
public class MicroOndas extends Eletrodomestico { public boolean portaFechada = false; public void ligar() { if (portaFechada == true) { super.ligar(); }

41 POLIMORFISMO Poli = muitos; Morfos = formas;
Polimorfismo = muitas formas; Capacidade de um objeto ser referenciado de formas diferentes; Imagine que você tem um método em uma determinada classe que precise receber como parâmetro um objeto, que em determinado momento pode ser um Circulo, depois um Quadrado, depois um Retangulo, ou seja, pode variar o tipo;

42 POLIMORFISMO public class Impressao { public void imprimir(Circulo objeto) { System.out.println(“A área é “ + objeto.área()); } public void imprimir(Quadrado objeto) { public void imprimir(Retangulo objeto) { Sobrecarga de métodos??? Lembre-se, repetiu código... Desconfie. NÃO!!!

43 POLIMORFISMO Figura double area() double perimetro() Circulo
double raio double area() double perimetro() Quadrado double lado double area() double perimetro() Retangulo int lado1, lado2 double area() double perimetro()

44 POLIMORFISMO public class Figura { public double area() { return 0.0; } public double perimetro() { public class Circulo extends Figura { public double raio; public double area() { return * raio * raio; } public double perimetro() { return 2 * * raio; public class Quadrado extends Figura { public double lado; public double area() { return lado * lado; } public double perimetro() { return 4 * lado; public class Retangulo extends Figura { public double lado1, lado2; public double area() { return lado1 * lado2; } public double perimetro() { return (2 * lado1) + (2 * lado2);

45 POLIMORFISMO public class Impressao { public void imprimir(Figura objeto) { System.out.println(“A área é “ + objeto.area()); } Circulo circulo = new Circulo(); Quadrado quadrado = new Quadrado(); Retangulo retangulo = new Retangulo(); Impressao impressao = new Impressao(); impressao.imprimir(circulo); impressao.imprimir(quadrado); impressao.imprimir(retangulo);


Carregar ppt "PROGRAMAÇÃO ORIENTADA A OBJETOS"

Apresentações semelhantes


Anúncios Google