Unidade 0 Programação Orientada a Objetos Regis Pires Magalhães [email_address]
Roteiro Introdução Programação Orientada a Objetos (por Alan Kay) Classe Objeto Encapsulamento Herança Polimorfismo Resumo Referências e Recursos
Programação Orientada a Objeto (por Alan Kay) 1. Tudo é um objeto Um objeto pode ser visto como uma variável extravagante Um objeto armazena Dados Requisições que podem ser feitas para ele Realizam operações sobre si mesmo 2. Um programa é conjunto de objetos que trocam mensagens entre si Para fazer uma requisição para um objeto, uma mensagem é enviada para ele
Programação Orientada a Objeto (por Alan Kay) 3. Cada objeto possui sua própria memória, composta de outros objetos Objetos complexos, que contenham outros objetos, podem ser criados Apesar da complexidade interna de tais objetos, do ponto de vista de uma entidade externa eles se apresentam com a mesma simplicidade de qualquer outro objeto 4. Todo objeto possui um tipo Cada objeto é uma instância de uma classe, onde classe é um sinônimo para tipo 5. Todos os objetos de um tipo particular podem receber as mesmas mensagens O mesmo código pode ser utilizado para manipular objetos que “se baseiam” em uma mesma classe
Programação Orientada a Objeto (POO) Classe Esqueleto para a criação de objetos Programadores codificam classes, não objetos Tipos definidos pelo programador Descreve um conjunto de objetos que possuem as mesmas características (dados) e comportamentos (operações)  O conjunto de requisições que podem ser feitas a um objeto define sua  interface Para escrever uma classe Defina seus dados (atributos) Defina seus comportamentos (métodos)
Classe Exemplo:  Uma classe Cachorro com: atributos nome e idade; métodos latir, obterNome e obterIdade
Programação Orientada a Objetos class   Cachorro   { String   nome ; int   idade ; Cachorro(String   n,   int   id)   { nome   =   n; idade   =   id; } void   latir()   { System. out .println( "Au, Au" ); } int   obterIdade()   { return   idade ; } String   obterNome()   { return   nome ; } } Exemplo escrito em Java
Programação Orientada a Objetos Objeto Possui dados (atributos) Informação sobre o estado do objeto Possui um conjunto definido de comportamentos Ações que o objeto pode realizar em si mesmo Mudam o estado do objeto Possui uma identidade Pode ser distinguido de outros objetos Um objeto é uma instância de uma classe
Alguns ambientes educacionais que facilitam o entendimento da OO BlueJ
Alguns ambientes educacionais que facilitam o entendimento da OO BlueJ
Alguns ambientes educacionais que facilitam o entendimento da OO Greenfoot – Filho do BlueJ
Alguns ambientes educacionais que facilitam o entendimento da OO Robocode
Programação Orientada a Objeto Encapsulamento Ocultação da informação Lida com a separação entre interface e implementação Decisão de projeto Altamente desejável Implementado como uma técnica na linguagem Java
Programação Orientada a Objeto Herança Termo “bonito” para uma idéia simples “ A propriedade que assegura que uma instância de uma classe-filha pode acessar tanto os atributos quanto os métodos de sua classe-pai” Timothy Budd - Object Oriented Programming
Programação Orientada a Objeto Herança “ Herança é uma forma poderosa de se compartilhar semelhanças entre classes, mas preservando as diferenças entre elas” Rumbaugh et al – Object Oriented Modelling and Design  Maneira de organizar classes em uma hierarquia Permite abstrair o propósito de uma classe tomando-se por base as classes que a precedem na hierarquia Possibilita a reutilização de código Quando um método é herdado, o código que o define não precisa ser reescrito Economia de tempo de codificação Redução da possibilidade de introdução de novos erros Código herdado pode ser bem eficiente
Programação Orientada a Objeto Herança Possibilita o compartilhamento de código Projetos complexos podem ser implementados por diversos programadores Implementada como um recurso específico de Java Termos essenciais para a POO Superclasse Classe utilizada como base para a criação de uma nova classe Subclasse Classe criada a partir da definição de uma classe já existente (superclasse) A subclasse X herda da superclasse Y Superclasse direta Superclasse da qual uma subclasse herda explicitamente (diretamente)
Programação Orientada a Objeto Herança Termos essenciais  para a POO Superclasse indireta Superclasse da qual uma subclasse herda de forma implícita (indireta) Exemplo:
Programação Orientada a Objeto Polimorfismo Habilidade da linguagem de manipular instâncias de subclasses de uma mesma superclasse através de métodos definidos na superclasse Possibilitado pela redefinição de métodos existentes em uma superclasse em suas subclasses Implementado com o uso de alguns recursos em Java Promove extensibilidade
Resumo Programação Orientada a Objeto Definição por Alan Kay Conceitos Classe Objeto Encapsulamento Herança Polimorfismo
Referências e Recursos Livros Object-Oriented System Development: HTML Edition http://g.oswego.edu/dl/oosdw3/ Software Engineering (5th Edition) – Ian Sommerville Object-Oriented Analysis and Design with Applications – Grady Booch Object-Oriented Software Engineering: A Case Driven Approach – Ivar Jacobson Web http://www.argonavis.com.br/cursos/java/j100/index.html  http://www.bluej.org/  http://www.greenfoot.org/  http://robocode.sourceforge.net/

Java 00 Poo

  • 1.
    Unidade 0 ProgramaçãoOrientada a Objetos Regis Pires Magalhães [email_address]
  • 2.
    Roteiro Introdução ProgramaçãoOrientada a Objetos (por Alan Kay) Classe Objeto Encapsulamento Herança Polimorfismo Resumo Referências e Recursos
  • 3.
    Programação Orientada aObjeto (por Alan Kay) 1. Tudo é um objeto Um objeto pode ser visto como uma variável extravagante Um objeto armazena Dados Requisições que podem ser feitas para ele Realizam operações sobre si mesmo 2. Um programa é conjunto de objetos que trocam mensagens entre si Para fazer uma requisição para um objeto, uma mensagem é enviada para ele
  • 4.
    Programação Orientada aObjeto (por Alan Kay) 3. Cada objeto possui sua própria memória, composta de outros objetos Objetos complexos, que contenham outros objetos, podem ser criados Apesar da complexidade interna de tais objetos, do ponto de vista de uma entidade externa eles se apresentam com a mesma simplicidade de qualquer outro objeto 4. Todo objeto possui um tipo Cada objeto é uma instância de uma classe, onde classe é um sinônimo para tipo 5. Todos os objetos de um tipo particular podem receber as mesmas mensagens O mesmo código pode ser utilizado para manipular objetos que “se baseiam” em uma mesma classe
  • 5.
    Programação Orientada aObjeto (POO) Classe Esqueleto para a criação de objetos Programadores codificam classes, não objetos Tipos definidos pelo programador Descreve um conjunto de objetos que possuem as mesmas características (dados) e comportamentos (operações) O conjunto de requisições que podem ser feitas a um objeto define sua interface Para escrever uma classe Defina seus dados (atributos) Defina seus comportamentos (métodos)
  • 6.
    Classe Exemplo: Uma classe Cachorro com: atributos nome e idade; métodos latir, obterNome e obterIdade
  • 7.
    Programação Orientada aObjetos class Cachorro { String nome ; int idade ; Cachorro(String n, int id) { nome = n; idade = id; } void latir() { System. out .println( "Au, Au" ); } int obterIdade() { return idade ; } String obterNome() { return nome ; } } Exemplo escrito em Java
  • 8.
    Programação Orientada aObjetos Objeto Possui dados (atributos) Informação sobre o estado do objeto Possui um conjunto definido de comportamentos Ações que o objeto pode realizar em si mesmo Mudam o estado do objeto Possui uma identidade Pode ser distinguido de outros objetos Um objeto é uma instância de uma classe
  • 9.
    Alguns ambientes educacionaisque facilitam o entendimento da OO BlueJ
  • 10.
    Alguns ambientes educacionaisque facilitam o entendimento da OO BlueJ
  • 11.
    Alguns ambientes educacionaisque facilitam o entendimento da OO Greenfoot – Filho do BlueJ
  • 12.
    Alguns ambientes educacionaisque facilitam o entendimento da OO Robocode
  • 13.
    Programação Orientada aObjeto Encapsulamento Ocultação da informação Lida com a separação entre interface e implementação Decisão de projeto Altamente desejável Implementado como uma técnica na linguagem Java
  • 14.
    Programação Orientada aObjeto Herança Termo “bonito” para uma idéia simples “ A propriedade que assegura que uma instância de uma classe-filha pode acessar tanto os atributos quanto os métodos de sua classe-pai” Timothy Budd - Object Oriented Programming
  • 15.
    Programação Orientada aObjeto Herança “ Herança é uma forma poderosa de se compartilhar semelhanças entre classes, mas preservando as diferenças entre elas” Rumbaugh et al – Object Oriented Modelling and Design Maneira de organizar classes em uma hierarquia Permite abstrair o propósito de uma classe tomando-se por base as classes que a precedem na hierarquia Possibilita a reutilização de código Quando um método é herdado, o código que o define não precisa ser reescrito Economia de tempo de codificação Redução da possibilidade de introdução de novos erros Código herdado pode ser bem eficiente
  • 16.
    Programação Orientada aObjeto Herança Possibilita o compartilhamento de código Projetos complexos podem ser implementados por diversos programadores Implementada como um recurso específico de Java Termos essenciais para a POO Superclasse Classe utilizada como base para a criação de uma nova classe Subclasse Classe criada a partir da definição de uma classe já existente (superclasse) A subclasse X herda da superclasse Y Superclasse direta Superclasse da qual uma subclasse herda explicitamente (diretamente)
  • 17.
    Programação Orientada aObjeto Herança Termos essenciais para a POO Superclasse indireta Superclasse da qual uma subclasse herda de forma implícita (indireta) Exemplo:
  • 18.
    Programação Orientada aObjeto Polimorfismo Habilidade da linguagem de manipular instâncias de subclasses de uma mesma superclasse através de métodos definidos na superclasse Possibilitado pela redefinição de métodos existentes em uma superclasse em suas subclasses Implementado com o uso de alguns recursos em Java Promove extensibilidade
  • 19.
    Resumo Programação Orientadaa Objeto Definição por Alan Kay Conceitos Classe Objeto Encapsulamento Herança Polimorfismo
  • 20.
    Referências e RecursosLivros Object-Oriented System Development: HTML Edition http://g.oswego.edu/dl/oosdw3/ Software Engineering (5th Edition) – Ian Sommerville Object-Oriented Analysis and Design with Applications – Grady Booch Object-Oriented Software Engineering: A Case Driven Approach – Ivar Jacobson Web http://www.argonavis.com.br/cursos/java/j100/index.html http://www.bluej.org/ http://www.greenfoot.org/ http://robocode.sourceforge.net/