• Save
Aula 3 Fundamentos da Orientação a Objetos
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Aula 3 Fundamentos da Orientação a Objetos

on

  • 1,979 views

 

Statistics

Views

Total Views
1,979
Views on SlideShare
1,978
Embed Views
1

Actions

Likes
2
Downloads
0
Comments
0

1 Embed 1

http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Aula 3 Fundamentos da Orientação a Objetos Presentation Transcript

  • 1. Fundamentos de Programação Orientada a Objetos Série de Posts: jogano10.com Eder Ignatowicz - Unisal
  • 2. Agenda Básica do Curso Introdução a Programação Orientada a Objetos Orientação a objetos básica Pacote Encapsulamento Herança Polimorfismo Classes Abstratas Interfaces
  • 3. Orientação a objetos básica Eder Ignatowicz - Unisal
  • 4. Realidade Atual... Realidade atual  Sistemas de alta complexidade;  Ferramentas de desenvolvimento drasticamente diferentes de 20 anos atrás.  Sistemas maiores, mais complexos e mais voláteis.A mudança para alcançar aqualidade e produtividade está na...
  • 5.  REUTILIZAÇÃO !!!!
  • 6. Análise e Programação OO. Análise orientada a objetos  Consiste em definir quais objetos fazem parte de um sistema e a maneira como se comportam. Programação orientada a objetos  Consiste em utilizar objetos computacionais para implementar as funcionalidades de um sistema.
  • 7. Vantagens OO REUTILIZAÇÃO na computação:  Existência de uma Biblioteca e de um Sistema de Catálogo;  Facilidade para documentação;  Sistemática rigorosa para testes;  Novas técnicas para especificação de sistemas tendo em vista a reutilização de módulos;  Linguagem, ferramentas e ambientes de desenvolvimento que estimulem a adoção, em larga escala, de tais métodos dentro das empresas;
  • 8. Vantagens OO Possibilidade do desenvolvedor trabalhar em um nível mais alto de abstração; Menor custo; Possibilidade de construir sistemas mais complexos; E principalmente...
  • 9. Vantagens OO ECONOMIA DE DINHEIRO !!!!
  • 10. Conceitos Básicos Abstração; Encapsulamento; Objetos; Classes; Herança; Etc.
  • 11. Orientação a objetos básica  Modelagem de objetos  Estrutura de classe  Membros de classe  Atributos  Métodos  Classes internas  Construtores  Acessibilidade de membros (publica privada, protegida)  Armazenamento de membros (padrão, estáticos, constantes)  Criação e manipulação de objetos  Instanciação  Chamada de métodos
  • 12. Modelagem de objetos E um objeto o que é?
  • 13. E objetos computacionais ? Objetos que se encontram dentro de sistemas de computador; São abstrações do mundo real; Objetos computacionais são estruturas de programas que contém as informações e os comportamentos que representam um objeto dentro do sistema.
  • 14. Modelagem de Objetos Entidades que possuem dados e instruções sobre como manipular estes dados Estão ligados à solução do problema;  Software Gráfico – Objetos: Circulos; Linhas; etc.  Software BD – Objetos: Tabelas; Linhas; Campos; etc.  Software Comercial: Pedidos; Produtos; Clientes; etc.
  • 15. Modelagem de Objetos
  • 16. Modelagem de Objetos
  • 17. Modelagem de Objetos
  • 18. Modelagem de Objetos E o UML?
  • 19. Modelagem de Objetos Exemplo UML X Classe
  • 20. Estrutura de Classe O que é classe? Geralmente implementa métodos e atributos; Atributos (fields)  Informações armazenadas por um objeto de uma classe;  Representam estado do objeto; Métodos  Comportamentos e serviços oferecidos pelos objetos da classe  “Mensagens”
  • 21. Estrutura de Classe
  • 22. Estrutura de Classe Métodos  Parte da classe que detalha como as operações são feitas;  Processamento do “programa”;  Pode utilizar ou não os dados do objeto (atributos);  Sintaxe em java:modificadores tipo de retorno nome do método(lista de parâmetros) { // código...}
  • 23. Estrutura de Classe Métodos
  • 24. Estrutura de Classe Métodos  Utilização
  • 25. Estrutura de Classe Exercício  Codificar a classe Pessoa e o método setNome(), SetAltura(), setIdade() e setPeso() para a Classe Pessoa  Ela possui os seguintes atributos:  String nome;  Double altura;  Double Idade;  Double Peso  E se eu quiser retornar o valor do peso?  E se eu quiser calcular o IMC?  Desafio: E para saber se a condição da pessoa pelo IMC?
  • 26. Estrutura de Classe Métodos• Saída de dados • Para visualizar os dados dos objetos, utilizaremos uma classe “interna” do java, ou seja, uma classe pronta com seus métodos e atributos. • System.out.println(); • System -> classe • Out -> objeto • Println() -> método • Vamos criar um método em nossa classe Pessoa que permitirá visualizar os dados na tela do computador public void exibeDados() { System.out.println(nome); System.out.println(peso); System.out.println(altura); System.out.println(idade); }
  • 27. Estrutura de Classe Métodos• Saída de dados public void exibeDados() { System.out.println(nome); System.out.println(peso); System.out.println(altura); System.out.println(idade); } Utilização: Pessoa p1 = new Pessoa(); p1.setNome(“João da Silva”); p1.setAltura(1.80); p1.setPeso(80.0); p1.setIdade(30); p1.exibeDados(); // Saída na tela do computador João da Silva 1.80 80.0 30
  • 28. Estrutura de Classe Construtor:  Comportamento de criação de um objeto de uma classe;  Características:  Tem o mesmo nome da classe;  É automaticamente chamado pelo operador new;  Não tem tipo de retorno (mas não se escreve void;
  • 29. Estrutura de Classe Destrutor:  Comportamento de destruição do objeto de uma classe. Fred* p = new Fred(); delete p;  // Automaticamente chama p->~Fred()
  • 30. Estrutura de Classe E no Java ? Existem destrutores em java? O que é esse tal de Garbage Collector (GC) ?• O GC é uma thread de baixaprioridade que ... • Ainda não...
  • 31. Acessibilidade de membros Encapsulamento… lembram?
  • 32. Acessibilidade de membros
  • 33. Acessibilidade de membros Os modificadores de acesso são palavras-chave que modificam a forma como podem ser acessadas as classes, métodos e/ou variáveis. São eles:  Private;  Protected;  Public  Static;
  • 34. Acessibilidade de membros Private  Privados, só podem ser acessados de dentro da classe (encapsulamento);  Uma classe que herde de uma superclasse com atributos declarados como "private" só poderá ter acesso a eles através dos métodos públicos da própria superclasse, caso contrário, não haverá acesso a estes atributos.
  • 35. Acessibilidade de membros
  • 36. Acessibilidade de membros Protected  Pode ser acessada somente dentro do pacote que está contida ou através de uma subclasse; Public  Classe, método ou variável assim declarada possa ser acessada em qualquer lugar e a qualquer momento da execução do programa. Final, abstract, static, etc. (cenas dos próximos capítulos) … Vamos reformar a nossa classe pessoa?
  • 37. Armazenamento de membros Variável de instância X de classe Variável de instância: valor é específico ao objeto e não à classe.  Geralmente possui uma valor diferente em cada objeto membro da classe. Variável de classe: valor é comum a todos os objetos membros da classe.  Mudar o valor de uma variável de classe em um objeto membro automaticamente muda o valor para todos os objetos membros. Compartilhada, “global”
  • 38. Armazenamento de membros  Uma variável é considerada como de instância por "default".  Também pode ser utilizada para métodos;  Para declarar uma variável de classe, acrescenta-se a palavra- chave static.  Exemplos: static int numeroDeInstanciasDestaClasse; static int LEFT = 1;  Vamos criar um contador de objetos na classe pessoa?
  • 39. Criação e manipulação de objetos Um objeto é criado com a palavra new, especificando sua classe; Diz-se "chamamos o construtor da classe“; A operação também se chama instanciar o objeto.ContaSimples umaConta = new ContaSimples("Joao", "30914060506", 1); No caso da classe ContaSimples, o construtor tem 3 parâmetros que são o valor de certos atributos do objeto (nome do titular, CPF do titular, número da conta).
  • 40. Criação e manipulação de objetos A variável umaConta é do tipo da classe ContaSimples e armazena uma referência ao objeto; É como se o objeto fosse uma pipa e a referência fosse uma linha amarrada à pipa; É “semelhante” a ponteiros em outras linguagens;
  • 41. Criação e manipulação de objetos E quando a pipa perde a linha? Um objeto existe enquanto houver pelo menos uma referência a ele; Depois que não houver mais referências, o objeto some (que nem a pipa sem linha!); Garbage Collector???
  • 42. Conceitos avançados Para o alto e avante...
  • 43. Garbage Collector Agora sim !!!  Coletor de lixo; Gerenciamento de memória; Oposição ao gerenciamento manual Encontrar e Coletar objetos não alcançáveis  Não Alcançável = qualquer coisa não transitivamente acessível a partir das raízes da aplicação  Ou seja...  Encontra objetos de um programa que não serão mais acessados no futuro, e desaloca os recursos utilizados por tais objetos
  • 44. Garbage Collector Automático e Seguro  O desenvolvedor não interfere ativamente na execução do GC, apenas em sua política de execução;  O GC não interfere na integridade do seu código; Oposição ao gerenciamento manual de memória.
  • 45. Garbage Collector Vantagens  Livra o programador de gerenciar manualmente a memória;  Elimina defeitos de software;  Previne vazamentos de memória;  Previne ponteiros pendentes; Desvantagens  Consomem recursos computacionais;  Não é determinístico;  Ruim pra drivers e dispositivos;
  • 46. Garbage Collector No Java...
  • 47. Garbage Collector Quando um objeto se torna elegível ao GC Para “forçar” a execução do GC Porém, nada garante que o G.C. será executado naquele instante, nem que as instâncias sem refêrencias serão recolhidas.
  • 48. Garbage Collector Finalize (“destrutor” Java)  Libera recursos que não são coletados automaticamente pelo GC  Último método executado antes da morte do Objeto.  A especificação não garante em que momento o método será chamado.  Não especifica qual Thread chamará o método finalizador  Não garante ordem
  • 49. Garbage Collector Finalize na prática  Implementação do método não trivial e é muito suscetível a erros  Durante a alocação a JVM trata objetos que sobrescrevem o método finalize de forma diferente.  Degrada performance da coleta do objeto pelo GC  São gastos dois ciclos do GC (melhor caso).  Primeiro ciclo identifica os objetos que não são alcançáveis e os coloca em uma fila para a execução do finalizador.  Segundo ciclo é usado para liberar a memória do heap.  Se o método finalize já foi executado
  • 50. Garbage Collector Finalize na prática  Objetos que implementam finalize ficam mais tempo em memória.  Mais pressão sobre o GC.  Aplicação pode terminar e não executar todos os objetos que estão na fila de finalização – Trabalho arriscado e desnecessário .
  • 51. Garbage Collector Quando usar finalize?  Necessidade de liberar recursos que são nativos.  Quando o objeto faz chamadas nativas e aloca memória (uma função em C que deve fazer uma chamada malloc)  Tentar garantir que um recurso foi realmente liberado.  Regra de ouro  Não use ! Mas se precisar saiba que ...  Finalize no Java != Destructor em C++  Escreva o método finalize usando boas práticas;  (Effective Java http://www.amazon.com/Effective-Java-Programming-Language-Guide/dp/0321356683)  Mas eu tenho coragem, quero utilizar !!! :D
  • 52. Garbage Collector
  • 53. Garbage Collector Leitura complementar:  http://portal.acm.org/citation.cfm?id=363280  http://en.wikipedia.org/wiki/Garbage_collection_(computer_sci ence)  http://www.javaworld.com/javaworld/jw-08-1996/jw-08-gc.html  http://www.linhadecodigo.com.br/Artigo.aspx?id=568
  • 54. Classes Internas (Inner Classes) As classes internas (Inner classes) também são chamadas de classes aninhadas. As classes internas são classes normais, porém são definidas dentro de uma classe ou método. As classes internas que não são declaradas dentro de métodos são chamadas de classes membro.
  • 55. Classes Internas (Inner Classes) As classes internas precisam de uma instância da classe externa para serem criadas. As classes externas atuam como o contexto das classes internas. As classes internas podem acessar os membros de sua classe externa, bem como sua instância.
  • 56. Classes Internas (Inner Classes) Para instanciar uma classe interna, de um método estático ou de outra classe, devemos fazer o seguinte: Para instanciar uma classe interna, de dentro de sua classe externa, apenas precisamos fazer assim:
  • 57. Inner Class Leitura complementar: http://www.javaranch.com/campfire/StoryInner.jsp
  • 58. Exercícios Resumo de uma página do que é o Garbage Collector e como é implementado em java; Resumo de que é uma classe interna e sua implementação em java.
  • 59. Dicas !• A palavra-chave this é utilizada para acessar o parâmetro implícito. Exemplo de sua utilização public pessoa(String nome, double altura, double peso, int idade) { this.nome = nome; this.altura = altura; this.peso = peso; this.idade = idade; } • Temos os parâmetros (nome, altura, peso, idade) iguais aos nomes dos atributos. Então, para não causar problema de referência (confusão do valor do parâmetro com o atributo), utiliza-se o this para que o java interprete de maneira correta. this.nome -> atributo nome do objeto.
  • 60. Dicas• Declaramos na classe Pessoa o atributo nome como public. Para efeitos de visibilidade, podemos acessar o atributo diretamente, ou seja, não utilizar os métodos getters e setters.ExemploPessoa p1 = new Pessoa();p1.nome = “João da Silva”;• Até o momento, estávamos utilizando p1.setNome(“João da Silva”); por questões de integridade dos dados. Dessa forma, podemos alterar um atributo sem utilizar métodos! PERIGOSO!• Os modificadores private/protected/package/public permitem fazer isso (visibilidade). Como orientação, usaremos private para os atributos.• Os demais atributos (altura, peso, idade) podem ser atribuídos dessa forma?