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

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

Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Apresentações semelhantes


Apresentação em tema: "Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a."— Transcrição da apresentação:

1

2 Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a Objetos

3 PROGRAMACÃO ORIENTADA A OBJETOS(cont.)

4 Significa esconder informações. Objetiva-se com o encapsulamento, proteger o estado e o comportamento interno do objeto, disponibilizando somente uma camada de interface com o ambiente externo para que seja efetuado a comunicação com o objeto. Encapsulamento ou Encapsulação

5 Estado + Comportamento Interface publica Representação gráfica de um objeto

6 O reflexo do encapsulamento na Orientação a Objeto, é que todo o objeto na sua estrutura elementar possui uma membrana de proteção ao longo de seu núcleo. O acesso ao estado e comportamento só é permitido através da passagem pela camada de comunicação representada pela membrana.

7 Em programação, somente a assinatura do método, ou seja, a chamada da função está publicada na interface. O conjunto da assinatura de todos os métodos também é conhecida como Application Programming Interface (API). Para um desenvolvedor utilizar objetos é necessário que ele conheça somente API dos mesmos. A complexidade de como um objeto foi implementado, esta encapsulada, não sendo relevante neste processo.

8 Exemplo 1 Visão do mundo real: Sempre escondemos do mundo externo alguns atributos pessoais; Definimos, através de ações se iremos ou não externar estes atributos. Salário getSalário Salário*0.3 O Cunhado Salário/2 O Leão do Imposto de Renda salário/10 A namoradinha

9 Pode-se ilustrar esta situação através da seguinte análise. Quando se dirige um carro é necessário compreender como o motor funciona com todas as suas “milhares” de peças. O motorista abstrai a complexidade interna do motor e fixa-se na interface disponibilizada por quem construiu o Carro, portanto as interfaces seriam os pedais de aceleração, freio e embreagem, painel com medidor de velocidade,etc. Exemplo 2

10 Pessoas Objeto complexo Pessoas Objeto menos complexo Escopo do Mundo Real Abstração de um objeto do mundo real

11 A definição básica sobre a abstração é supressão de detalhe, visando controlar a complexidade das características essenciais. Na orientação a Objeto pode-se aplicar este conceito no processo de especificação, construção e uso de classe. No processo de especificação é necessário, pois os objetos identificados no mundo real normalmente são muitos complexos. Uso da Abstração

12 Por exemplo: Imagine o que seria modelar uma “ classe pessoa” com todos os atributos e comportamentos? Para a redução da complexidade da classe pessoa é necessário delimitar o escopo com base no domínio do sistema que esta pessoa será modelada,considerando somente os aspectos relevantes.

13 Por exemplo Para um sistema acadêmico uma pessoa pode representar um aluno, sendo neste escopo somente necessário os atributos nome, matricula e idade. As demais características que não são essenciais nesse contexto serão abstratas. Como os detalhes ficam internos e escondidos no objeto. Pessoa pode-se subentender que este objeto possui quaisquer características de uma Pessoa do mundo real.

14 A abstração também se aplica na construção de uma classe. Uma primeira etapa é definir toda a interface da classe, ou seja como os componentes externos irão interagir com a classe e qual o comportamento esperado pela mesma. O objeto nesta etapa é somente a de definir a interface, ficando no que a classe deve fazer e não como a interface será implementada.

15 Muitas vezes definimos uma classe que não representa verdadeiramente algo do mundo real que precise ser instanciado (usado em programas). É o caso da classe Funcionário criada neste exemplo. Na prática, objetos do tipo Funcionario nunca serão usados, pois instanciaremos apenas objetos a partir de Gerente e Secretaria. Funcionário é apenas uma classe que surgiu da necessidade de uma generalização. Classes assim são chamadas de abstratas. Exemplo de abstração

16 Portanto, abstrai-se a implementação interna e concentra-se na especificação da interface que representa o protocolo de comunicação com o externo. Um critério de programação para a redução de acoplamento é programar para uma interface e não para uma implementação. Com a interface bem definida, pode- se abstrair o mundo externo e focar-se em como realizar o que foi especificado na interface.

17 Uma classe pode representar genericamente uma ou mais classe. Assim, classes podem ser definidas a partir de uma classe pai. O recurso de herança estabelece que uma classe que herda de outra classe possui todas as suas características, atributos e comportamentos. Semelhante a herança genética do mundo real, a onde filhos mantém as características dos pais, a classe pai também denominado com superclasse, pois passa todas as características para a classe filha. Herança de Classe

18 A classe filha ou subclasse além de conter os atributos e comportamentos da superclasse, pode acrescentar algo especifico a sua funcionalidade ou reescrever ou redefinir métodos da superclasse. O termo overridden(reescrever) é utilizado quando a subclasse reescreve ou redefine um método herdado da subclasse

19

20 Exemplo 2

21 Podem ser um pouco confuso, porque a subclasse tem mais características que a superclasse Subclasse é mais específica que a superclasse Toda subclasse é um objeto da sua superclasse, mas não vice-versa. Usa-se formas de estruturas hierárquicas (árvores)

22 Uma superclasse pode ser ainda definida como uma classe concreta (como quaisquer classe convencional) ou uma Abstrata por definição não permitindo a criação de objetos, portanto não é possível a criação de instâncias a partir desta classe.

23 A criação de um objeto a partir de uma classe é chamada de processo de instanciação. A instanciação na realidade corresponde à alocação da memória para armazenar informações de um objeto, semelhante ao que ocorre na declaração de uma variável qualquer. Para realizar a instanciação de um objeto qualquer, é usado o operador new(em java). Enquanto a classe representa um modelo abstrato que serve apenas como base, os objetos representam modelos concretos.

24 A definição de uma classe como abstrata pode parecer algo estranho, visto que uma estrutura das funções principais de uma classe e a geração de objetos. A declaração de classe abstrata é algo comum e deve ser utilizada quando não faz sentido a geração de instancias da superclasse.

25 Métodos abstratos não possuem implementação e são assinadas na classe abstrata. As classes que herdam da classe abstrata, são obrigadas a implementar os métodos abstratos herdados da superclasse. Métodos Abstratos

26 Tenho a classe abstrata Funcionario, com o método abstrato getBonificacao ; as classes Gerente e Presidente estendendo Funcionario e implementando o método getBonificacao ; e, por fim, a classe Diretor, que estende Gerente, mas não implementa o método getBonificacao. Exemplo

27 De forma objetiva, uma classe abstrata serve apenas como modelo para uma classe concreta (classe que comumente usamos). Os métodos abstratos definidos em uma classe abstrata o que devem obrigatoriamente ser implementados em uma classe concreta. Mas se uma classe abstrata herdar outra classe abstrata, a classe que herda não precisa implementar os métodos abstratos. Para criarmos uma classe ou método abstrato usamos a palavra-chave abstract. Analise !

28 Associados ao conceito de herança apresentam-se os conceitos de Especialização e Generalização. A especialização ocorre quando uma subclasse, além de herdar da superclasse, acrescenta características especificas diferente da superclasse. Já o conceito de gerenalização procede quando existem classe que possuem características em comum e cria-se uma classe genérica, ou seja uma superclasse que englobe essas características. Especialização e Gerenalização

29 Duas subclasse PessoaFisica e PessoaJuridica que possuem atributos e um métodos em comum.Neste caso aplica-se a gerenalização sobre os elementos em comum encapsulando - os em uma superclasse Pessoa que é uma abstração das subclasses. Os atributos e métodos particulares das subclasses PessoaFisica e PessoaJuridica é a especialização da classe Pessoa. Exemplo

30 Generalização Especialização Representação gráfica da Especialização e Generalização. Exemplo 1

31 Exemplo 2

32 O uso de heranças é um recurso poderoso, mas mal aplicado gera graves problemas nos projetos Orientados a Objetos. Muitos Professores já apresentaram ou ainda apresentam a herança como o principal recurso da Orientação a Objetos e a forma ideal para alcançar a reutilização. Orientação a objetos vai muito além de heranças e que a reutilização pode ser alcançada através de outros formas.

33 Para determinar o nível de acesso dos elementos de uma classe, são usados os qualificadores de acesso public, private e protected. Por meio das restrições de acesso é possível assegurar que certas variáveis de instância tenham valores restritos que só podem ser acessados da própria classe e não por intermédio de classes externas, mantendo uma certa segurança com relação à integridade do valor armazenado. Dica: sempre defina os atributos de uma classe como privados, a não ser que tenha uma boa justificativa para não serem. Nível de Acesso

34 Tipos de Qualificadores de acessos public private protected Estes atributos e métodos são sempre acessíveis em todos os métodos de todas as classes. Este é o nível menos rígido de encapsulamento, que equivale a não encapsular. Estes atributos e métodos são acessíveis somente nos métodos (todos) da própria classe. Este é o nível mais rígido de encapsulamento. Estes atributos e métodos são acessíveis no pacote, nos métodos da própria classe e suas subclasses, o que será visto em Herança. Visível no pacote e na classe.

35 Exemplo em Java public class Produto { int codigo; String nome; double preco; //métodos }

36 A forma como os objetos colaboram em um sistema Orientado a objetos é feito basicamente através de troca de mensagens. As mensagens são utilizadas para comunicação entre objetos para a troca de dados e realização de ações. Ações são implementadas através de métodos que são publicadas nas camadas de interface do objeto. Métodos, Métodos Construtor, Sobrecarga e Polimorfismo

37 Em programação os métodos são as funções que possuem um parâmetro de retorno ou não, sendo neste caso do tipo void. Um método possui também um nome e seus parâmetros

38 Exemplos: Métodos

39 Por exemplo: O método public double getDistancia(int x, int y) enumerando os seus elementos estruturais. public double getDistancia(int x, int y) Modificador Parâmetro de retorno Nome do Método Conjunto de Parâmetros de entrada

40 public class Pessoa{ // Atributos private String nome; private String sexo; // Métodos public void andar( ){ System.out.println[nome + “ está andando...”]; }

41 O conjunto nome mais parâmetros também é conhecido como a assinatura do método Ou seja uma assinatura é um método Em uma classe não é possível a ocorrência de métodos com a mesma assinatura, porém podem existir métodos com o mesmo nome, mas parâmetros diferentes.

42 class Conta { //... outros métodos e atributos... boolean saca( double valor) { if ( this.saldo < valor) { return false ; } else { this.saldo = this.saldo - valor; return true ; } Outro Exemplo

43 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. Esse conceito de auto-referência é importante para que possamos criar métodos construtores sobrecarregados e métodos acessores mais facilmente.métodos construtores sobrecarregados Comando em Java

44 O método construtor é um método especial que está presente em todas as classes. Este método deve possuir o mesmo nome da classe. Por exemplo: A classe Ponto poderia ter um método construtor public Ponto(). Além disso, diferente de outros métodos, o método construtor não possui parâmetros de retorno, nem mesmo a declaração void. Método Construtor

45 public class Pessoa{ // Atributos private String nome; private String sexo; // construtores Pessoa [String nome, String sexo]{ this.nome = nome; this.sexo =sexo; // Métodos public void andar( ){ System.out.println[nome + “ está andando...”]; } Exemplo

46 Em uma classe podem existir vários métodos construtores desde que possuam parâmetros diferentes. Outras característica importante é em relação a sua utilização. Quando o objeto nasce, ou seja é instanciada a partir de uma classe o primeiro método a ser executado é o método construtor. Como foi mencionado, uma classe obrigatoriamente tem pelo menos um método construtor.

47 O conceito Sobrecarga ou overloanding é definido com métodos em uma classe que possuem o mesmo nome, mas parâmetros diferentes. Ressaltando que pode-se ter vários métodos com o mesmo nome, pois o que identifica um método é o seu nome associado com os seus parâmetros. Portanto, para uma classe Ponto existe a ocorrência de sobrecarga de construtores quando está têm os métodos public Ponto() e public Ponto(int x, int y). Observa-se a ocorrência de sobrecarga em métodos construtores ou não. Sobrecarga ou overloanding

48 A sobrecarga está sendo aplicada, por exemplo, quando são declarados dois construtores para uma mesma classe, sendo um sem parâmetros e outro com parâmetros. private double saldo; public Conta(){ } public Conta(double saldo){ this.saldo=saldo } Podemos, então, criar objetos dessa classe de dois modos : Conta c= new Conta(); ou Conta c= new Conta(100); inicializando o saldo com algum valor

49 Objetos no mundo real que estão sobre uma mesma hierarquia podem possuir comportamentos definidos pelos seus pais, mas realizá-las de forma particular. Definimos Polimorfismo como um princípio a partir do qual as classes derivadas de uma única classe base são capazes de invocar os métodos que, embora apresentem a mesma assinatura, comportam-se de maneira diferente para cada uma das classes derivadas. Polimofismo

50 Com o Polimorfismo, os mesmos atributos e objetos podem ser utilizados em objetos distintos, porém, com implementações lógicas diferentes. Exemplos: Podemos assumir que uma bola de futebol e uma camisa da seleção brasileira são artigos esportivos, mais que o cálculo deles em uma venda é calculado de formas diferentes.

51 Uma superclasse FiguraGeometrica com o método public double calculeArea(), notoriamente esta superclasse não tem como responder a este método, pois a função desta classe é ser um conceito genérico. O objetivo desta classe é definir que todo figura geométrica tem o comportamento de calculo de área. Já a subclasse Quadrado e Triangulo vão possuir o método de calculo de área, sendo que a implementação para cada classe se dará de forma particular. A importância de definir um conceito padronizado é a facilidade de absorver futuras mudanças. Outro Exemplo

52 Podemos dizer que uma classe chamada Vendedor e outra chamada Diretor podem ter como base uma classe chamada Pessoa, com um método chamado CalcularVendas. Se este método (definido na classe base) se comportar de maneira diferente para as chamadas feitas a partir de uma instância de Vendedor e para as chamadas feitas a partir de uma instância de Diretor, ele será considerado um método polimórfico, ou seja, um método de várias formas. Outro Exemplo

53 Assim podemos ter na classe base o método CalcularVendas: public decimal CalcularVendas() { decimal valorUnitario = decimal.MinValue; decimal produtosVendidos = decimal.MinValue; return valorUnitario * produtosVendidos; }

54 Na classe Vendedor temos o mesmo método, mais com a codificação diferente: public decimal CalcularVendas() { decimal valorUnitario = 50; decimal produtosVendidos = 1500; return valorUnitario * produtosVendidos; }

55 O mesmo ocorre na classe Diretor: public decimal CalcularVendas() { decimal valorUnitario = 150; decimal produtosVendidos = 3800; decimal taxaAdicional = 100; return taxaAdicional + (valorUnitario produtosVendidos); } Assim temos um mesmo método, com diferentes formas.

56 Uma nova classe Retângulo que herda de FiguraGeometrica tem também o método public double calculoArea() apesar do método possuir a mesma assinatura a sua realização seguira as características da classe Retângulo. Conclui-se, que um comportamento pode ter varias formas de ser respondido a depender do tipo de objeto, denominando- se como polimórfico. Outro Exemplo

57 Analise !! A vantagem do polimorfismo reflete-se no baixo acoplamento no projeto. Um objeto pode estar acoplado a um objeto sem necessariamente saber o seu tipo. E o impacto com as mudanças no programa serão mínimas.

58 Vamos agora ver o Tutorial para utilização do Netbeans


Carregar ppt "Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a."

Apresentações semelhantes


Anúncios Google