SlideShare une entreprise Scribd logo
1  sur  37
Aula 1 Introdução à programação orientada por objectos Classes, objectos e referências (revisão) Modularização em pacotes Organização em ficheiros e directórios
Programação estruturada Forma Instâncias de tipos escalares ou matriciais Instruções organizadas em estruturas de controlo Sem modularização Melhorias Melhora estruturação do fluxo de controlo dos programas Possibilita raciocínio formal acerca de programas Aumenta legibilidade dos programas face ao passado (programação “esparguete”) 2008/2009 Programação Orientada por Objectos 2 Organização do código em módulos, i.e., “cápsulas” com objectivos bem definidos contendo uma implementação oculta e expondo ao exterior uma interface. A modularização favorece a abstracção.
Programação procedimental Forma Instâncias de tipos escalares ou vectoriais Instruções organizadas em estruturas de controlo Instruções e estruturas de controlo organizadas em rotinas Modularização em rotinas Funções – Devolvem resultado de um cálculo Procedimentos – Agem sobre dados, modificando-os Melhorias Possibilita encapsulamento Facilita reutilização Melhora localização de erros e facilita manutenção Possibilita maximização da coesão e minimização das ligações 2010-03-30 Programação Orientada para Objectos 3
Programação baseada em objectos ou centrada nos dados Forma Instâncias de tipos escalares ou vectoriais, ou de TAD (tipos abstractos de dados) Instruções organizadas em estruturas de controlo Instruções e estruturas de controlo organizadas em rotinas Rotinas relacionadas organizadas em TAD Modularização TAD – Conjunto de dados e operações Operações – Rotinas que operam sobre instâncias de TAD Melhorias Melhora encapsulamento (dados e operações relacionadas) Possibilita ocultação dos dados Muda perspectiva sobre os problemas 2008/2009 Programação Orientada por Objectos 4
Programação orientada por objectos Forma Instâncias de classes (objectos), de tipos escalares ou vectoriais, ou de TAD (tipos abstractos de dados) Instruções organizadas em estruturas de controlo Instruções e estruturas de controlo organizadas em rotinas Rotinas relacionadas organizadas em TAD Operações relacionadas organizadas em classes Modularização Classes – Modelos para objectos com um dado comportamento TAD – Conjunto de dados e operações Operações – Rotinas que operam sobre instâncias de TAD Métodos – Implementação das operações Melhorias Introduz noções de extensão e especialização Muda drasticamente perspectiva sobre os problemas 2008/2009 Programação Orientada por Objectos 5
Programação orientada por objectos: classes Paradigmas usados Programação estruturada – Controlo de fluxo Programação procedimental – Rotinas Programação centrada nos dados – TAD e operações Vantagens Melhor modularização Melhor encapsulamento Maior possibilidade de reutilização Possibilidade de extensão e especialização Maior expressividade Maior flexibilidade Maior robustez 2008/2009 Programação Orientada por Objectos 6
Programação orientada por objectos: encapsulamento Interface: Operações – Implementadas em um ou mais métodos Propriedades – Podem ou não ser implementadas usando atributos Implementação Métodos – Implementação de operações Atributos – Dados que fazem parte da implementação da classe 2008/2009 Programação Orientada por Objectos 7
Programação orientada por objectos: abordagem Tudo (ou quase) são objectos Objectos têm responsabilidades, comportamentos e propriedades Organização de programas reflecte realidade… …mas os objectos são personalizados 2008/2009 Programação Orientada por Objectos 8 Na linguagem usada pelos programadores é muito comum e útil a prosopopeia. Por exemplo, “depois pede-se o nome ao aluno” corresponde a student.name() ou student.getName().
Programação orientada por objectos: análise e desenho Análise do problema Que objectos existem? Que responsabilidades têm? Como colaboram? Como classificar os objectos? Desenho da solução Que classes definir? Que objectos construir? Que responsabilidades lhes atribuir? De que forma os fazer colaborar? 2008/2009 Programação Orientada por Objectos 9
Classes e objectos Classes São tipos São modelo ou projecto para construção de objectos com características comuns Declaram-se ou definem-se Definem conjunto de possíveis objectos Exemplos: humano, carro Objectos São instâncias de classes Constroem-se Exemplos: Manuel Silva, o carro do Manuel Silva 2008/2009 Programação Orientada por Objectos 10
Classes e objectos Classes Representam objectos com características comuns Favorecem abstracção (consumidor só conhece interface) Permitem encapsulamento (implementação oculta) Possibilitam reutilização (por especialização ou instanciação) Objectos Modelam ou representam entidades reais (carro) ou virtuais (compra) Têm identidade própria Têm estado total ou parcialmente observável através da interface 2008/2009 Programação Orientada por Objectos 11
Tipos de referência e tipos de valor Tipos de referência Identidade é relevante Igualdade usualmente não é relevante Tipos de valor Igualdade é relevante Identidade não é relevante 2008/2009 Programação Orientada por Objectos 12 Classes Java. Tipos primitivos em Java.
Classes em Java Definem conjunto de características (propriedades e operações) comuns a todas as suas instâncias. 2010-03-30 Programação Orientada para Objectos 13 Car - licenseNumber : String - model : String - yearBuilt : int - lastInspectionDate : Date implementação interface + getLicenseNumber() : String + getModel() : String + getLastInspectionDate() : Date + getYearAge() : int + getNextInspectionDate() : Date + isInspected() : boolean + setInspectedToday() Propriedades Operação
Objectos em Java Instâncias de uma classe com valores específicos nos seus atributos e, por isso, com propriedades bem definidas. 2010-03-30 Programação Orientada para Objectos 14 johnsCar : Car licenseNumber = 00-aa-00 model = VW-GTI-TDI-SLK yearBuilt = 2005 lastInspectionDate = 2009-11-20
Operações e métodos em Java Operações Parte da interface da classe  Invocam-se Métodos Parte da implementação da classe Executados quando se invoca a operação correspondente Uma única operação pode ser implementada por vários métodos 2008/2009 Programação Orientada por Objectos 15 Como? Usando polimorfismo de subtipos, que se verá mais tarde.
Construtores em Java Inicializam objectos quando estes são construídos Colocam objectos num estado inicial válido (cumprindo o a condição invariante de instância) 2008/2009 Programação Orientada por Objectos 16
Operações em Java Modificadoras – Alteram o estado do objecto e possivelmente do resto do programa ou seu ambiente (são procedimentos) Não modificadoras – Não alteram o estado do objecto Inspectoras – Devolvem uma qualquer propriedade do objecto e não têm efeitos laterais (são funções) “Alter-modificadoras” – Alteram o estado do programa ou do seu ambiente sem alterar o objecto (são procedimentos) 2008/2009 Programação Orientada por Objectos 17
Operações em Java: boas práticas Cada operação deve ter um objectivo (uma função) único e bem definido Operações inspectoras – Nome reflecte aquilo que devolvem Outras operações – Nome reflecte a acção que realizam Uma operação não deve tentar ser simultaneamente inspectora e modificadora (função e procedimento) 2008/2009 Programação Orientada por Objectos 18
Características de classe Classes são “pseudo-objectos” fábrica das suas instâncias “Pseudo-objectos” fábricas têm características de classe Em Java declaração de atributos e métodos de classe precede-se do qualificador static Boas práticas Evitar características de classe! Usar apenas para definir constantes! Exemplo Math.PI 2008/2009 Programação Orientada por Objectos 19 Por oposição às características de instância.
Referências e objectos CarjohnsCar = newCar("00-aa-00", …); CarjanesCar = johnsCar; CarfredsCar = newCar(johnsCar); 2010-03-30 Programação Orientada para Objectos 20 Construtor por cópia! johnsCar, janesCar : Car fredsCar : Car licenseNumber = 00-aa-00 … licenseNumber = 00-aa-00 … Hmmm…. Mesma matrícula??
Referências e objectos CarjohnsCar = newCar("00-aa-00", …); CarjanesCar = johnsCar; CarfredsCar = newCar(johnsCar); 2010-03-30 Programação Orientada para Objectos 21 Referências: Objectos: johnsCar : «ref» Car : Car : Car janesCar : «ref» Car fredsCar : «ref» Car licenseNumber = 00-aa-00 … licenseNumber = 00-aa-00 …
UML = UnifiedModellingLanguage 2010-03-30 Programação Orientada para Objectos 22 Nome Acesso Nome do objecto Atributos Atributos Operações johnsCar : Car Car licenseNumber = 00-aa-00 model = VW-GTI-TDI-SLK yearBuilt = 2005 lastInspectionDate = 2009-11-20 - licenseNumber : String … Valores dos atributos + getLicenseNumber() : String …
Referências e objectos: declaração e construção Classevariável; variável = null; Classe outraVariável = null; ClasseaindaOutraVariável = newClasse(…); 2008/2009 Programação Orientada por Objectos 23 Declaração da referência variável, não inicializada, capaz de referenciar objectos da classe Classe. Construção do novo objecto Construção da referência Construção da referência Atenção! Os tipos primitivos do Java (int, float, char, etc.) são tipos de valor. Não há referências para eles. As variáveis declaradas são uma instância do tipo primitivo. Por exemplo: intanInteger; anInteger = 10; intanotherInteger = 20; Inicialização da referência com o valor especial null, que indica que referência não referencia qualquer objecto. Construção de uma referência com valor inicial nulo. Construção de um novo objecto e de uma referência que o referencia.
Acesso a características (ou membros) Usa-se operador . (ponto) Objecto (característica de instância) referênciaParaObjecto.característica Classe (característica de classe) Classe.característica 2008/2009 Programação Orientada por Objectos 24 Se a referência for nula (null), é lançada a excepção NullPointerException.
Princípio do encapsulamento Tudo o que pode ser privado, deve ser privado! Regras gerais Todos os atributos devem ser privados Os construtores são usualmente públicos 2008/2009 Programação Orientada por Objectos 25 As constantes, pelo contrário, podem e muitas vezes devem ser públicas.
Classe é um módulo Interface Operações e métodos não privados Constantes não privadas Implementação Operações e métodos privados Atributos privados Corpos dos métodos Contrato Pré e pós-condições das operações e métodos Manual de utilização Comentários de documentação da classe Comentários de documentação de cada característica pública 2008/2009 Programação Orientada por Objectos 26 não privado ≠ público etc.
Categorias de acesso Características ou membros podem ser private – acesso apenas por outros membros da mesma classe package-private (sem qualificador) – adicionalmente, acesso por membros de classes do mesmo pacote protected – adicionalmente, acesso por membros de classes derivadas (a ver nas próximas aulas)  public –  acesso universal 2008/2009 Programação Orientada por Objectos 27 Acessibilidade crescente Há promiscuidade entre objectos da mesma classe! Cuidado! Que é isto? Próximo diapositivo…
Pacote Pacote Unidades de modularização em Java 2010-03-30 Programação OrientadaparaObjectos 28 Classe Classe Rotina Rotina Rotina Rotina Classe Rotina Rotina Classe Rotina Rotina Rotina Rotina Classe Rotina Rotina Rotina Rotina Rotina Rotina
Pacotes Conjuntos de classes com relação lógica forte entre si Exemplos java.util org.junit Convenções de nomes Só minúsculas Sem separação entre palavras Abreviaturas e siglas aceitáveis Primeiros elementos são nome DNS invertido (e.g., pt.iscte) Restantes elementos podem designar unidades organizacionais (e.g., pt.iscte.dcti.poo) 2008/2009 Programação Orientada por Objectos 29
Pacotes como módulos Interface Classes públicas Membros não privados de classes públicas Implementação Para além da implementação das classes… … todas as classes privadas de pacote (package-private) 2008/2009 Programação Orientada por Objectos 30
Pacotes: organização hierárquica java lang util org junit omg pt iscte dcti ip games poo Hierarquia aberta Não têm declaração isolada Cada ficheiro .java declara o pacote a que pertence 2008/2009 Programação Orientada por Objectos 31 Game.java Player.java packagept.iscte.dcti.poo class Game {     … } packagept.iscte.dcti.poo classPlayer {     … }
Pacotes: organização hierárquica Relevante quanto a nomes Organização lógica (como directórios) Menor colisão de nomes Irrelevante quanto a categorias acesso Pacote e subpacote são independentes Membros do subpacote não o são do pacote Membros do pacote não o são do subpacote 2008/2009 Programação Orientada por Objectos 32
Pacotes: organização hierárquica 2010-03-30 Programação Orientada para Objectos 33 The type top.AtTop is not visible The type top.bottom.AtBottom is not visible
Ficheiros Uma só classe pública por ficheiro Classe pública e seu ficheiro têm de ter o mesmo nome Número arbitrário de classes privadas de pacote (package-private) por ficheiro, mas… Boa prática: Uma só classe por ficheiro! 2008/2009 Programação Orientada por Objectos 34
Directórios Usualmente, à hierarquia de pacotes corresponde uma hierarquia de directórios com os ficheiros correspondentes 2008/2009 Programação Orientada por Objectos 35 Depende da implementação do Java. No Explorer do Windows (directórios) No Eclipse (pacotes)
A reter Uma classe é um modelo Um objecto é uma instância de uma classe Em Java não é possível declarar variáveis cujo tipo é uma classe: variáveis declaradas dessa forma são referências para objectos da classe Tudo o que pode ser privado, deve ser privado As classes devem ser organizadas em pacotes 2010-03-30 Programação Orientada para Objectos 36
A ler para as próximas aulas ... Capítulo 8 do livro: Y. Daniel Liang, Introduction to Java Programming, 7.ª edição, Prentice-Hall, 2008.ISBN: 978-0-13-605966-0 2010-03-30 Programação Orientada para Objectos 37

Contenu connexe

Tendances

Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
Charles Jungbeck
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
Ryan Padilha
 

Tendances (20)

4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 
Mvc delphi
Mvc delphiMvc delphi
Mvc delphi
 
Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphi
 
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
 
Aula5
Aula5Aula5
Aula5
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
UML
UMLUML
UML
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
Exercitando modelagem em UML
Exercitando modelagem em UMLExercitando modelagem em UML
Exercitando modelagem em UML
 
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em JavaPOO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
 

En vedette

En vedette (14)

14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
Programação Orientada por Objectos - Aula 7
Programação Orientada por Objectos - Aula 7Programação Orientada por Objectos - Aula 7
Programação Orientada por Objectos - Aula 7
 
Programação Orientada por Objectos - Aula 6
Programação Orientada por Objectos - Aula 6Programação Orientada por Objectos - Aula 6
Programação Orientada por Objectos - Aula 6
 
Introdução à programação orientada para aspectos
Introdução à programação orientada para aspectosIntrodução à programação orientada para aspectos
Introdução à programação orientada para aspectos
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
 
Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3
 
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
 
Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5
 
Eng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitosEng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitos
 

Similaire à Programação Orientada por Objectos - Aula 1

Planode Aula
Planode AulaPlanode Aula
Planode Aula
softeam
 
Sap Inside Track Sao Paulo 09 Classes De Negócio Em Abap Orientado A Objetos
Sap Inside Track Sao Paulo 09 Classes De Negócio Em Abap Orientado A ObjetosSap Inside Track Sao Paulo 09 Classes De Negócio Em Abap Orientado A Objetos
Sap Inside Track Sao Paulo 09 Classes De Negócio Em Abap Orientado A Objetos
Marcelo Ramos
 

Similaire à Programação Orientada por Objectos - Aula 1 (20)

Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
Sap Inside Track Sao Paulo 09 Classes De Negócio Em Abap Orientado A Objetos
Sap Inside Track Sao Paulo 09 Classes De Negócio Em Abap Orientado A ObjetosSap Inside Track Sao Paulo 09 Classes De Negócio Em Abap Orientado A Objetos
Sap Inside Track Sao Paulo 09 Classes De Negócio Em Abap Orientado A Objetos
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = Produtividade
 
TESTE
TESTETESTE
TESTE
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
Gestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e PlanificaçõesGestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e Planificações
 
Naked Objects
Naked ObjectsNaked Objects
Naked Objects
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Merlinferramentassbc2006 Revisado Em6paginas
Merlinferramentassbc2006 Revisado Em6paginasMerlinferramentassbc2006 Revisado Em6paginas
Merlinferramentassbc2006 Revisado Em6paginas
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engine
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Reutilização
ReutilizaçãoReutilização
Reutilização
 
Aula1
Aula1Aula1
Aula1
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1
 
Diagramadeclassesal
DiagramadeclassesalDiagramadeclassesal
Diagramadeclassesal
 

Plus de Manuel Menezes de Sequeira

Plus de Manuel Menezes de Sequeira (15)

Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
 
Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, Scanner
 
Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteres
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java
 
Semana 2: Funções e listas, variáveis
Semana  2: Funções e listas, variáveisSemana  2: Funções e listas, variáveis
Semana 2: Funções e listas, variáveis
 
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
 
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
 
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
 
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de softwareEng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
 
Eng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoEng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validação
 
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorEng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
 
Eng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoEng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónico
 

Dernier

ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
rfmbrandao
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
LidianeLill2
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 

Dernier (20)

Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Questões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LPQuestões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LP
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 

Programação Orientada por Objectos - Aula 1

  • 1. Aula 1 Introdução à programação orientada por objectos Classes, objectos e referências (revisão) Modularização em pacotes Organização em ficheiros e directórios
  • 2. Programação estruturada Forma Instâncias de tipos escalares ou matriciais Instruções organizadas em estruturas de controlo Sem modularização Melhorias Melhora estruturação do fluxo de controlo dos programas Possibilita raciocínio formal acerca de programas Aumenta legibilidade dos programas face ao passado (programação “esparguete”) 2008/2009 Programação Orientada por Objectos 2 Organização do código em módulos, i.e., “cápsulas” com objectivos bem definidos contendo uma implementação oculta e expondo ao exterior uma interface. A modularização favorece a abstracção.
  • 3. Programação procedimental Forma Instâncias de tipos escalares ou vectoriais Instruções organizadas em estruturas de controlo Instruções e estruturas de controlo organizadas em rotinas Modularização em rotinas Funções – Devolvem resultado de um cálculo Procedimentos – Agem sobre dados, modificando-os Melhorias Possibilita encapsulamento Facilita reutilização Melhora localização de erros e facilita manutenção Possibilita maximização da coesão e minimização das ligações 2010-03-30 Programação Orientada para Objectos 3
  • 4. Programação baseada em objectos ou centrada nos dados Forma Instâncias de tipos escalares ou vectoriais, ou de TAD (tipos abstractos de dados) Instruções organizadas em estruturas de controlo Instruções e estruturas de controlo organizadas em rotinas Rotinas relacionadas organizadas em TAD Modularização TAD – Conjunto de dados e operações Operações – Rotinas que operam sobre instâncias de TAD Melhorias Melhora encapsulamento (dados e operações relacionadas) Possibilita ocultação dos dados Muda perspectiva sobre os problemas 2008/2009 Programação Orientada por Objectos 4
  • 5. Programação orientada por objectos Forma Instâncias de classes (objectos), de tipos escalares ou vectoriais, ou de TAD (tipos abstractos de dados) Instruções organizadas em estruturas de controlo Instruções e estruturas de controlo organizadas em rotinas Rotinas relacionadas organizadas em TAD Operações relacionadas organizadas em classes Modularização Classes – Modelos para objectos com um dado comportamento TAD – Conjunto de dados e operações Operações – Rotinas que operam sobre instâncias de TAD Métodos – Implementação das operações Melhorias Introduz noções de extensão e especialização Muda drasticamente perspectiva sobre os problemas 2008/2009 Programação Orientada por Objectos 5
  • 6. Programação orientada por objectos: classes Paradigmas usados Programação estruturada – Controlo de fluxo Programação procedimental – Rotinas Programação centrada nos dados – TAD e operações Vantagens Melhor modularização Melhor encapsulamento Maior possibilidade de reutilização Possibilidade de extensão e especialização Maior expressividade Maior flexibilidade Maior robustez 2008/2009 Programação Orientada por Objectos 6
  • 7. Programação orientada por objectos: encapsulamento Interface: Operações – Implementadas em um ou mais métodos Propriedades – Podem ou não ser implementadas usando atributos Implementação Métodos – Implementação de operações Atributos – Dados que fazem parte da implementação da classe 2008/2009 Programação Orientada por Objectos 7
  • 8. Programação orientada por objectos: abordagem Tudo (ou quase) são objectos Objectos têm responsabilidades, comportamentos e propriedades Organização de programas reflecte realidade… …mas os objectos são personalizados 2008/2009 Programação Orientada por Objectos 8 Na linguagem usada pelos programadores é muito comum e útil a prosopopeia. Por exemplo, “depois pede-se o nome ao aluno” corresponde a student.name() ou student.getName().
  • 9. Programação orientada por objectos: análise e desenho Análise do problema Que objectos existem? Que responsabilidades têm? Como colaboram? Como classificar os objectos? Desenho da solução Que classes definir? Que objectos construir? Que responsabilidades lhes atribuir? De que forma os fazer colaborar? 2008/2009 Programação Orientada por Objectos 9
  • 10. Classes e objectos Classes São tipos São modelo ou projecto para construção de objectos com características comuns Declaram-se ou definem-se Definem conjunto de possíveis objectos Exemplos: humano, carro Objectos São instâncias de classes Constroem-se Exemplos: Manuel Silva, o carro do Manuel Silva 2008/2009 Programação Orientada por Objectos 10
  • 11. Classes e objectos Classes Representam objectos com características comuns Favorecem abstracção (consumidor só conhece interface) Permitem encapsulamento (implementação oculta) Possibilitam reutilização (por especialização ou instanciação) Objectos Modelam ou representam entidades reais (carro) ou virtuais (compra) Têm identidade própria Têm estado total ou parcialmente observável através da interface 2008/2009 Programação Orientada por Objectos 11
  • 12. Tipos de referência e tipos de valor Tipos de referência Identidade é relevante Igualdade usualmente não é relevante Tipos de valor Igualdade é relevante Identidade não é relevante 2008/2009 Programação Orientada por Objectos 12 Classes Java. Tipos primitivos em Java.
  • 13. Classes em Java Definem conjunto de características (propriedades e operações) comuns a todas as suas instâncias. 2010-03-30 Programação Orientada para Objectos 13 Car - licenseNumber : String - model : String - yearBuilt : int - lastInspectionDate : Date implementação interface + getLicenseNumber() : String + getModel() : String + getLastInspectionDate() : Date + getYearAge() : int + getNextInspectionDate() : Date + isInspected() : boolean + setInspectedToday() Propriedades Operação
  • 14. Objectos em Java Instâncias de uma classe com valores específicos nos seus atributos e, por isso, com propriedades bem definidas. 2010-03-30 Programação Orientada para Objectos 14 johnsCar : Car licenseNumber = 00-aa-00 model = VW-GTI-TDI-SLK yearBuilt = 2005 lastInspectionDate = 2009-11-20
  • 15. Operações e métodos em Java Operações Parte da interface da classe Invocam-se Métodos Parte da implementação da classe Executados quando se invoca a operação correspondente Uma única operação pode ser implementada por vários métodos 2008/2009 Programação Orientada por Objectos 15 Como? Usando polimorfismo de subtipos, que se verá mais tarde.
  • 16. Construtores em Java Inicializam objectos quando estes são construídos Colocam objectos num estado inicial válido (cumprindo o a condição invariante de instância) 2008/2009 Programação Orientada por Objectos 16
  • 17. Operações em Java Modificadoras – Alteram o estado do objecto e possivelmente do resto do programa ou seu ambiente (são procedimentos) Não modificadoras – Não alteram o estado do objecto Inspectoras – Devolvem uma qualquer propriedade do objecto e não têm efeitos laterais (são funções) “Alter-modificadoras” – Alteram o estado do programa ou do seu ambiente sem alterar o objecto (são procedimentos) 2008/2009 Programação Orientada por Objectos 17
  • 18. Operações em Java: boas práticas Cada operação deve ter um objectivo (uma função) único e bem definido Operações inspectoras – Nome reflecte aquilo que devolvem Outras operações – Nome reflecte a acção que realizam Uma operação não deve tentar ser simultaneamente inspectora e modificadora (função e procedimento) 2008/2009 Programação Orientada por Objectos 18
  • 19. Características de classe Classes são “pseudo-objectos” fábrica das suas instâncias “Pseudo-objectos” fábricas têm características de classe Em Java declaração de atributos e métodos de classe precede-se do qualificador static Boas práticas Evitar características de classe! Usar apenas para definir constantes! Exemplo Math.PI 2008/2009 Programação Orientada por Objectos 19 Por oposição às características de instância.
  • 20. Referências e objectos CarjohnsCar = newCar("00-aa-00", …); CarjanesCar = johnsCar; CarfredsCar = newCar(johnsCar); 2010-03-30 Programação Orientada para Objectos 20 Construtor por cópia! johnsCar, janesCar : Car fredsCar : Car licenseNumber = 00-aa-00 … licenseNumber = 00-aa-00 … Hmmm…. Mesma matrícula??
  • 21. Referências e objectos CarjohnsCar = newCar("00-aa-00", …); CarjanesCar = johnsCar; CarfredsCar = newCar(johnsCar); 2010-03-30 Programação Orientada para Objectos 21 Referências: Objectos: johnsCar : «ref» Car : Car : Car janesCar : «ref» Car fredsCar : «ref» Car licenseNumber = 00-aa-00 … licenseNumber = 00-aa-00 …
  • 22. UML = UnifiedModellingLanguage 2010-03-30 Programação Orientada para Objectos 22 Nome Acesso Nome do objecto Atributos Atributos Operações johnsCar : Car Car licenseNumber = 00-aa-00 model = VW-GTI-TDI-SLK yearBuilt = 2005 lastInspectionDate = 2009-11-20 - licenseNumber : String … Valores dos atributos + getLicenseNumber() : String …
  • 23. Referências e objectos: declaração e construção Classevariável; variável = null; Classe outraVariável = null; ClasseaindaOutraVariável = newClasse(…); 2008/2009 Programação Orientada por Objectos 23 Declaração da referência variável, não inicializada, capaz de referenciar objectos da classe Classe. Construção do novo objecto Construção da referência Construção da referência Atenção! Os tipos primitivos do Java (int, float, char, etc.) são tipos de valor. Não há referências para eles. As variáveis declaradas são uma instância do tipo primitivo. Por exemplo: intanInteger; anInteger = 10; intanotherInteger = 20; Inicialização da referência com o valor especial null, que indica que referência não referencia qualquer objecto. Construção de uma referência com valor inicial nulo. Construção de um novo objecto e de uma referência que o referencia.
  • 24. Acesso a características (ou membros) Usa-se operador . (ponto) Objecto (característica de instância) referênciaParaObjecto.característica Classe (característica de classe) Classe.característica 2008/2009 Programação Orientada por Objectos 24 Se a referência for nula (null), é lançada a excepção NullPointerException.
  • 25. Princípio do encapsulamento Tudo o que pode ser privado, deve ser privado! Regras gerais Todos os atributos devem ser privados Os construtores são usualmente públicos 2008/2009 Programação Orientada por Objectos 25 As constantes, pelo contrário, podem e muitas vezes devem ser públicas.
  • 26. Classe é um módulo Interface Operações e métodos não privados Constantes não privadas Implementação Operações e métodos privados Atributos privados Corpos dos métodos Contrato Pré e pós-condições das operações e métodos Manual de utilização Comentários de documentação da classe Comentários de documentação de cada característica pública 2008/2009 Programação Orientada por Objectos 26 não privado ≠ público etc.
  • 27. Categorias de acesso Características ou membros podem ser private – acesso apenas por outros membros da mesma classe package-private (sem qualificador) – adicionalmente, acesso por membros de classes do mesmo pacote protected – adicionalmente, acesso por membros de classes derivadas (a ver nas próximas aulas) public – acesso universal 2008/2009 Programação Orientada por Objectos 27 Acessibilidade crescente Há promiscuidade entre objectos da mesma classe! Cuidado! Que é isto? Próximo diapositivo…
  • 28. Pacote Pacote Unidades de modularização em Java 2010-03-30 Programação OrientadaparaObjectos 28 Classe Classe Rotina Rotina Rotina Rotina Classe Rotina Rotina Classe Rotina Rotina Rotina Rotina Classe Rotina Rotina Rotina Rotina Rotina Rotina
  • 29. Pacotes Conjuntos de classes com relação lógica forte entre si Exemplos java.util org.junit Convenções de nomes Só minúsculas Sem separação entre palavras Abreviaturas e siglas aceitáveis Primeiros elementos são nome DNS invertido (e.g., pt.iscte) Restantes elementos podem designar unidades organizacionais (e.g., pt.iscte.dcti.poo) 2008/2009 Programação Orientada por Objectos 29
  • 30. Pacotes como módulos Interface Classes públicas Membros não privados de classes públicas Implementação Para além da implementação das classes… … todas as classes privadas de pacote (package-private) 2008/2009 Programação Orientada por Objectos 30
  • 31. Pacotes: organização hierárquica java lang util org junit omg pt iscte dcti ip games poo Hierarquia aberta Não têm declaração isolada Cada ficheiro .java declara o pacote a que pertence 2008/2009 Programação Orientada por Objectos 31 Game.java Player.java packagept.iscte.dcti.poo class Game { … } packagept.iscte.dcti.poo classPlayer { … }
  • 32. Pacotes: organização hierárquica Relevante quanto a nomes Organização lógica (como directórios) Menor colisão de nomes Irrelevante quanto a categorias acesso Pacote e subpacote são independentes Membros do subpacote não o são do pacote Membros do pacote não o são do subpacote 2008/2009 Programação Orientada por Objectos 32
  • 33. Pacotes: organização hierárquica 2010-03-30 Programação Orientada para Objectos 33 The type top.AtTop is not visible The type top.bottom.AtBottom is not visible
  • 34. Ficheiros Uma só classe pública por ficheiro Classe pública e seu ficheiro têm de ter o mesmo nome Número arbitrário de classes privadas de pacote (package-private) por ficheiro, mas… Boa prática: Uma só classe por ficheiro! 2008/2009 Programação Orientada por Objectos 34
  • 35. Directórios Usualmente, à hierarquia de pacotes corresponde uma hierarquia de directórios com os ficheiros correspondentes 2008/2009 Programação Orientada por Objectos 35 Depende da implementação do Java. No Explorer do Windows (directórios) No Eclipse (pacotes)
  • 36. A reter Uma classe é um modelo Um objecto é uma instância de uma classe Em Java não é possível declarar variáveis cujo tipo é uma classe: variáveis declaradas dessa forma são referências para objectos da classe Tudo o que pode ser privado, deve ser privado As classes devem ser organizadas em pacotes 2010-03-30 Programação Orientada para Objectos 36
  • 37. A ler para as próximas aulas ... Capítulo 8 do livro: Y. Daniel Liang, Introduction to Java Programming, 7.ª edição, Prentice-Hall, 2008.ISBN: 978-0-13-605966-0 2010-03-30 Programação Orientada para Objectos 37
  • 38. Sumário Introdução à programação orientada por objectos Classes, objectos e referências (revisão) Modularização em pacotes Organização em ficheiros e directórios 2010-03-30 Programação Orientada para Objectos 38