SlideShare una empresa de Scribd logo
1 de 42
Paradigmas da programação
Programação orientada por objectos
Modularização em pacotes
 Enumerações
 Instrução de selecção switch
 Gama limitada dos tipos inteiros
2013/2014 Fundamentos de Programação 2
2013/2014 Fundamentos de Programação 3
 Programação esparguete
 Programação estruturada
 Programação procedimental
 Programação baseada em objectos
 Programação orientada por objectos
2013/2014 Fundamentos de Programação 4
Progresso
 Forma
 Instâncias de tipos escalares ou arrays
 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»)
2013/2014 Fundamentos de Programação 5
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.
 Forma
 Instâncias de tipos escalares ou arrays
 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 o mundo, modificando-o
 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
2013/2014 Fundamentos de Programação 6
 Forma
 Instâncias de tipos escalares, de arrays ou deTAD
 Instruções organizadas em estruturas de controlo
 Instruções e estruturas de controlo organizadas em rotinas
 Rotinas relacionadas organizadas emTAD
 Modularização
 TAD – Conjunto de dados e operações
 Operações – Rotinas que operam sobre instâncias deTAD
 Melhorias
 Melhora encapsulamento (dados e operações relacionadas)
 Possibilita ocultação da informação
 Muda perspectiva sobre os problemas
2013/2014 Fundamentos de Programação 7
Ou programação centrada
nos dados.
Tipos
abstractos de
dados
 Forma
 Instâncias de classes (objectos), de tipos escalares, de arrays ou deTAD
 Instruções organizadas em estruturas de controlo
 Instruções e estruturas de controlo organizadas em rotinas
 Rotinas relacionadas organizadas emTAD
 Rotinas relacionadas organizadas em classes
 Modularização
 Classes – Modelos para objectos com um dado comportamento
 TAD – Conjuntos de dados e operações
 Operações – Rotinas que operam sobre instâncias deTAD ou sobre objectos
 Métodos – Implementação das operações
 Melhorias
 Introduz noções de extensão e especialização
 Muda drasticamente perspectiva sobre os problemas
2013/2014 Fundamentos de Programação 8
2013/2014 Fundamentos de Programação 9
 Assenta sobre
 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
2013/2014 Fundamentos de Programação 10
 Interface
 Operações – Implementadas por um ou mais métodos
 Propriedades – Podem ou não ser implementadas
usando atributos
 Implementação
 Métodos – Implementação de operações
 Métodos auxiliares – Usados pelos outros métodos
 Atributos – Dados que são parte da implementação
2013/2014 Fundamentos de Programação 11
 Tudo (ou quase) são objectos
 Objectos têm
 responsabilidades,
 comportamentos e
 propriedades
 Organização de programas reflecte realidade…
 …mas os objectos são personificados
2013/2014 Fundamentos de Programação 12
Na linguagem usada pelos programadores é muito comum e útil a
prosopopeia. Por exemplo, «depois pede-se a rapidez ao carro»
corresponde a car.speed() ou car.getSpeed().
 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?
2013/2014 Fundamentos de Programação 13
 Classes
 São tipos
 São modelo para objectos com características comuns
 Declaram-se ou definem-se
 Definem conjunto de possíveis objectos
 São nomes comuns: humano, carro, …
 Objectos
 São instâncias de classes
 Constroem-se
 São nomes próprios: Manuel Silva, o carro do Manuel, …
2013/2014 Fundamentos de Programação 14
 Classes
 Favorecem abstracção
 Permitem encapsulamento
 Possibilitam reutilização
 Objectos
 Representam entidades
▪ reais (e.g., carro) ou
▪ virtuais (e.g., compra)
 Têm identidade
 Têm estado observável através da interface
2013/2014 Fundamentos de Programação 15
Consumidor só conhece
interface.
Implementação oculta.
Por especialização ou por
instanciação.
 Tipos de referência
 Classes de identidade ou referência
▪ Identidade é relevante
▪ Igualdade usualmente não é relevante
 Classes de igualdade ou valor
▪ Identidade não é relevante
▪ Igualdade é relevante
 Tipos de valor
 Identidade não é relevante
 Igualdade é relevante
2013/2014 Fundamentos de Programação 16
E.g., classes Java.
Tipos primitivos em
Java.
E.g., String,
Rational, Point
E.g., Person, Gang,
Car
 Definem características
(propriedades e
operações) comuns a
todas as instâncias
2013/2014 Fundamentos de Programação 17
Car
- licenseNumber : String
- model : String
- yearBuilt : int
- lastInspectionDate : LocalDate
+ getLicenseNumber() : String
+ getModel() : String
+ getLastInspectionDate() : LocalDate
+ getYearAge() : int
+ getNextInspectionDate() : LocalDate
+ isInspected() : boolean
+ setInspectedToday()
Propriedades
Operação
implementaçãointerface
 Instâncias de classe de
referência com
identidade e com
propriedades bem
definidas
2013/2014 Fundamentos de Programação 18
johnsCar : Car
licenseNumber = 00-AA-00
model =VW-GTI-TDI-SLK
yearBuilt = 2005
lastInspectionDate = 2014-11-20
 Operações
 Parte da interface da classe
 São invocadas
 Métodos
 Parte da implementação da classe
 São executados quando se invoca a sua operação
 Uma única operação pode ser implementada por
vários métodos
2013/2014 Fundamentos de Programação 19
Como? Usando polimorfismo de
subtipos, que se verá mais tarde.
 Inicializam instâncias/objectos em construção
 Colocam instâncias/objectos em estado
inicial válido, i.e., cumprindo a condição
invariante de instância
2013/2014 Fundamentos de Programação 20
 Modificadoras – Alteram estado do objecto
(procedimentos)
 Não modificadoras – Não alteram estado do
objecto
 Inspectoras – Devolvem propriedade do objecto e não
têm efeitos laterais (funções)
 «Alter-modificadoras» –Alteram estado do programa
ou do seu ambiente (procedimentos) sem alterar
estado do objecto
2013/2014 Fundamentos de Programação 21
 Cada operação deve ter um objectivo (ou uma
função) único e bem definido
 Operações inspectoras – Nome reflecte o que
devolvem
 Outras operações – Nome reflecte acção realizada
 Uma operação não deve ser simultaneamente
inspectora e modificadora (função e
procedimento)
2013/2014 Fundamentos de Programação 22
 Classes são «pseudo-objectos» fábrica das suas instâncias
 «Pseudo-objectos» fábricas têm características de classe
 Declaração de atributos e métodos de classe: com static
 Boas práticas
 Evitar características de classe, em geral
 Usar para definir constantes
 Exemplo
 Math.PI
2013/2014 Fundamentos de Programação 23
Por oposição às
características de
instância.
final Car johnsCar = new Car("00-AA-00", …);
final Car janesCar = johnsCar;
final Car fredsCar = new Car("01-35-AP", …);
2013/2014 Fundamentos de Programação 24
johnsCar, janesCar : Car
licenseNumber = 00-AA-00
…
fredsCar : Car
licenseNumber = 01-35-AP
…
final Car johnsCar = new Car("00-AA-00", …);
final Car janesCar = johnsCar;
final Car fredsCar = new Car("01-35-AP", …);
2013/2014 Fundamentos de Programação 25
johnsCar : «ref» Car
: Car
licenseNumber = 00-aa-00
…
: Car
licenseNumber = 01-35-AP
…
janesCar : «ref» Car
fredsCar : «ref» Car
Referências: Objectos:
2013/2014 Fundamentos de Programação 26
johnsCar : Car
licenseNumber = 00-aa-00
model =VW-GTI-TDI-SLK
yearBuilt = 2005
lastInspectionDate = 2013-11-20
Car
- licenseNumber : String
…
+ getLicenseNumber() : String
…
Nome da
classe
AtributosOperações
Acesso Nome do objecto
Atributos Valores dos atributos
Classe variável;
variável = null;
Classe outraVariável = null;
Classe aindaOutraVariável =
new Classe(…);
2013/2014 Fundamentos de Programação 27
Inicialização da referência com o valor
especial null, que indica que referência não
referencia qualquer objecto.
Declaração da referência variável, não
inicializada, capaz de referenciar objectos da
classe Classe.
Construção de um novo
objecto e de uma referência
que o referencia.
Construção de uma
referência com valor inicial
nulo.
Construçãodareferê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:
int anInteger;
anInteger = 10;
int anotherInteger = 20;
Construção do novo objecto
Construçãodareferência
 Usa-se operador . (ponto)
 Objecto (característica de instância)
referênciaParaObjecto.característica
 Classe (característica de classe)
Classe.característica
2013/2014 Fundamentos de Programação 28
Se a referência for nula
(null), é lançada a excepção
NullPointerException.
Ou membros.
 Tudo o que pode ser privado deve ser privado!
 Regras gerais
 Todos os atributos devem ser privados
 Os construtores são usualmente públicos
 As operações devem ser públicas
 Os métodos auxiliares devem ser privados
2013/2014 Fundamentos de Programação 29
As constantes, pelo contrário,
podem e muitas vezes devem ser
públicas.
 Interface
 Operações não privadas
 Constantes não privadas
 Implementação
 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
2013/2014 Fundamentos de Programação 30
não privado ≠ público
etc.
 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
2013/2014 Fundamentos de Programação 31
Acessibilidadecrescente
Há promiscuidade entre objectos da
mesma classe! Cuidado!
Que é isto? Próximo diapositivo…
2013/2014 Fundamentos de Programação 32
Pacote Pacote
2013/2014 Fundamentos de Programação 33
Classe
Rotina
Rotina
Rotina
Classe
Rotina Rotina
Rotina
Classe
Rotina
Rotina
Rotina
Rotina
Classe
Rotina
Rotina
Classe
Rotina
Rotina
Rotina
Rotina
 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
 Prefixo é nome DNS invertido (e.g., pt.europeia)
 Elementos após prefixo podem ser unidades
organizacionais (e.g., pt.europeia.fp)
2013/2014 Fundamentos de Programação 34
 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)
2013/2014 Fundamentos de Programação 35
 java
 lang
 util
 org
 junit
 omg
 pt
 europeia
▪ fp
▪ eda
 Hierarquia aberta
 Não têm declaração isolada
 Cada ficheiro .java declara o pacote a que
pertence
2013/2014 Fundamentos de Programação 36
package pt.europeia.fp
public class Game {
…
}
Game.java
package pt.europeia.fp
public class Player {
…
}
Player.java
 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
2013/2014 Fundamentos de Programação 37
2013/2014 Fundamentos de Programação 38
The type top.AtTop is not visibleThe type top.bottom.AtBottom is not visible
 Uma só classe pública por ficheiro
 Classe pública em ficheiro com mesmo nome
 Número arbitrário de classes privadas de
pacote (package-private) por ficheiro, mas…
 Boa prática: Uma só classe por ficheiro!
2013/2014 Fundamentos de Programação 39
 Usualmente, à hierarquia de pacotes
corresponde uma hierarquia de directórios
com os ficheiros correspondentes
2013/2014 Fundamentos de Programação 40
Depende da
implementação do Java.
No Eclipse
(directórios/pastas)
No Eclipse
(pacotes)
 Classes são modelos
 Objectos são instâncias classes de referência
 Em Java variáveis não são instâncias de classes,
mas sim referências para instâncias de classes
 Tudo o que pode ser privado deve ser privado
 Classes devem organizar-se em pacotes
2013/2014 Fundamentos de Programação 41
 Paradigmas da programação
 Programação orientada por objectos
 Modularização em pacotes
2013/2014 Fundamentos de Programação 42

Más contenido relacionado

La actualidad más candente

Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
Regis Magalhães
 

La actualidad más candente (20)

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...
 
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...
 
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...
 
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...
 
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
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
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...
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#
 
Introducao ao C#
Introducao ao C#Introducao ao C#
Introducao ao C#
 
POO - Aula 003
POO - Aula 003POO - Aula 003
POO - Aula 003
 
Java - Primeiros passos
Java - Primeiros passosJava - Primeiros passos
Java - Primeiros passos
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
Java2
Java2Java2
Java2
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)
 
Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2
 
Java primeiros-passos
Java primeiros-passosJava primeiros-passos
Java primeiros-passos
 
Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1
 

Destacado

Destacado (7)

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 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
 
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 3
Programação Orientada por Objectos - Aula 3Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3
 
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
 

Similar a 12. Paradigmas da programação; Programação orientada por objectos; Pacotes – Fundamentos de Programação

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
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
softeam
 
Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013
Pablo Dall'Oglio
 

Similar a 12. Paradigmas da programação; Programação orientada por objectos; Pacotes – Fundamentos de Programação (20)

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
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = Produtividade
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Domain Driven Design PHP TDC2014
Domain Driven Design PHP TDC2014Domain Driven Design PHP TDC2014
Domain Driven Design PHP TDC2014
 
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
 
Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
 
Diagramadeclassesal
DiagramadeclassesalDiagramadeclassesal
Diagramadeclassesal
 
Machine Learning com Vowpal Wabbit
Machine Learning com Vowpal WabbitMachine Learning com Vowpal Wabbit
Machine Learning com Vowpal Wabbit
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutos
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013
 
Bi05 fontes de_dados_hana_para_relatorios_presentação_conceitual_2
Bi05 fontes de_dados_hana_para_relatorios_presentação_conceitual_2Bi05 fontes de_dados_hana_para_relatorios_presentação_conceitual_2
Bi05 fontes de_dados_hana_para_relatorios_presentação_conceitual_2
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Domain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem IntrodutóriaDomain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem Introdutória
 

Más de Manuel Menezes de Sequeira

Más de Manuel Menezes de Sequeira (14)

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 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 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
 
Eng.ª do Software - 6. Gestão de projectos
Eng.ª do Software - 6. Gestão de projectosEng.ª do Software - 6. Gestão de projectos
Eng.ª do Software - 6. Gestão de projectos
 

Último

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 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
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
 
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
 

Último (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
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
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 ...
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)
 
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
 
tensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxtensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptx
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
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
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
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)
 
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...
 
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
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa para
 
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
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
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çã...
 
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...
 
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
 

12. Paradigmas da programação; Programação orientada por objectos; Pacotes – Fundamentos de Programação

  • 1. Paradigmas da programação Programação orientada por objectos Modularização em pacotes
  • 2.  Enumerações  Instrução de selecção switch  Gama limitada dos tipos inteiros 2013/2014 Fundamentos de Programação 2
  • 3. 2013/2014 Fundamentos de Programação 3
  • 4.  Programação esparguete  Programação estruturada  Programação procedimental  Programação baseada em objectos  Programação orientada por objectos 2013/2014 Fundamentos de Programação 4 Progresso
  • 5.  Forma  Instâncias de tipos escalares ou arrays  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») 2013/2014 Fundamentos de Programação 5 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.
  • 6.  Forma  Instâncias de tipos escalares ou arrays  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 o mundo, modificando-o  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 2013/2014 Fundamentos de Programação 6
  • 7.  Forma  Instâncias de tipos escalares, de arrays ou deTAD  Instruções organizadas em estruturas de controlo  Instruções e estruturas de controlo organizadas em rotinas  Rotinas relacionadas organizadas emTAD  Modularização  TAD – Conjunto de dados e operações  Operações – Rotinas que operam sobre instâncias deTAD  Melhorias  Melhora encapsulamento (dados e operações relacionadas)  Possibilita ocultação da informação  Muda perspectiva sobre os problemas 2013/2014 Fundamentos de Programação 7 Ou programação centrada nos dados. Tipos abstractos de dados
  • 8.  Forma  Instâncias de classes (objectos), de tipos escalares, de arrays ou deTAD  Instruções organizadas em estruturas de controlo  Instruções e estruturas de controlo organizadas em rotinas  Rotinas relacionadas organizadas emTAD  Rotinas relacionadas organizadas em classes  Modularização  Classes – Modelos para objectos com um dado comportamento  TAD – Conjuntos de dados e operações  Operações – Rotinas que operam sobre instâncias deTAD ou sobre objectos  Métodos – Implementação das operações  Melhorias  Introduz noções de extensão e especialização  Muda drasticamente perspectiva sobre os problemas 2013/2014 Fundamentos de Programação 8
  • 9. 2013/2014 Fundamentos de Programação 9
  • 10.  Assenta sobre  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 2013/2014 Fundamentos de Programação 10
  • 11.  Interface  Operações – Implementadas por um ou mais métodos  Propriedades – Podem ou não ser implementadas usando atributos  Implementação  Métodos – Implementação de operações  Métodos auxiliares – Usados pelos outros métodos  Atributos – Dados que são parte da implementação 2013/2014 Fundamentos de Programação 11
  • 12.  Tudo (ou quase) são objectos  Objectos têm  responsabilidades,  comportamentos e  propriedades  Organização de programas reflecte realidade…  …mas os objectos são personificados 2013/2014 Fundamentos de Programação 12 Na linguagem usada pelos programadores é muito comum e útil a prosopopeia. Por exemplo, «depois pede-se a rapidez ao carro» corresponde a car.speed() ou car.getSpeed().
  • 13.  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? 2013/2014 Fundamentos de Programação 13
  • 14.  Classes  São tipos  São modelo para objectos com características comuns  Declaram-se ou definem-se  Definem conjunto de possíveis objectos  São nomes comuns: humano, carro, …  Objectos  São instâncias de classes  Constroem-se  São nomes próprios: Manuel Silva, o carro do Manuel, … 2013/2014 Fundamentos de Programação 14
  • 15.  Classes  Favorecem abstracção  Permitem encapsulamento  Possibilitam reutilização  Objectos  Representam entidades ▪ reais (e.g., carro) ou ▪ virtuais (e.g., compra)  Têm identidade  Têm estado observável através da interface 2013/2014 Fundamentos de Programação 15 Consumidor só conhece interface. Implementação oculta. Por especialização ou por instanciação.
  • 16.  Tipos de referência  Classes de identidade ou referência ▪ Identidade é relevante ▪ Igualdade usualmente não é relevante  Classes de igualdade ou valor ▪ Identidade não é relevante ▪ Igualdade é relevante  Tipos de valor  Identidade não é relevante  Igualdade é relevante 2013/2014 Fundamentos de Programação 16 E.g., classes Java. Tipos primitivos em Java. E.g., String, Rational, Point E.g., Person, Gang, Car
  • 17.  Definem características (propriedades e operações) comuns a todas as instâncias 2013/2014 Fundamentos de Programação 17 Car - licenseNumber : String - model : String - yearBuilt : int - lastInspectionDate : LocalDate + getLicenseNumber() : String + getModel() : String + getLastInspectionDate() : LocalDate + getYearAge() : int + getNextInspectionDate() : LocalDate + isInspected() : boolean + setInspectedToday() Propriedades Operação implementaçãointerface
  • 18.  Instâncias de classe de referência com identidade e com propriedades bem definidas 2013/2014 Fundamentos de Programação 18 johnsCar : Car licenseNumber = 00-AA-00 model =VW-GTI-TDI-SLK yearBuilt = 2005 lastInspectionDate = 2014-11-20
  • 19.  Operações  Parte da interface da classe  São invocadas  Métodos  Parte da implementação da classe  São executados quando se invoca a sua operação  Uma única operação pode ser implementada por vários métodos 2013/2014 Fundamentos de Programação 19 Como? Usando polimorfismo de subtipos, que se verá mais tarde.
  • 20.  Inicializam instâncias/objectos em construção  Colocam instâncias/objectos em estado inicial válido, i.e., cumprindo a condição invariante de instância 2013/2014 Fundamentos de Programação 20
  • 21.  Modificadoras – Alteram estado do objecto (procedimentos)  Não modificadoras – Não alteram estado do objecto  Inspectoras – Devolvem propriedade do objecto e não têm efeitos laterais (funções)  «Alter-modificadoras» –Alteram estado do programa ou do seu ambiente (procedimentos) sem alterar estado do objecto 2013/2014 Fundamentos de Programação 21
  • 22.  Cada operação deve ter um objectivo (ou uma função) único e bem definido  Operações inspectoras – Nome reflecte o que devolvem  Outras operações – Nome reflecte acção realizada  Uma operação não deve ser simultaneamente inspectora e modificadora (função e procedimento) 2013/2014 Fundamentos de Programação 22
  • 23.  Classes são «pseudo-objectos» fábrica das suas instâncias  «Pseudo-objectos» fábricas têm características de classe  Declaração de atributos e métodos de classe: com static  Boas práticas  Evitar características de classe, em geral  Usar para definir constantes  Exemplo  Math.PI 2013/2014 Fundamentos de Programação 23 Por oposição às características de instância.
  • 24. final Car johnsCar = new Car("00-AA-00", …); final Car janesCar = johnsCar; final Car fredsCar = new Car("01-35-AP", …); 2013/2014 Fundamentos de Programação 24 johnsCar, janesCar : Car licenseNumber = 00-AA-00 … fredsCar : Car licenseNumber = 01-35-AP …
  • 25. final Car johnsCar = new Car("00-AA-00", …); final Car janesCar = johnsCar; final Car fredsCar = new Car("01-35-AP", …); 2013/2014 Fundamentos de Programação 25 johnsCar : «ref» Car : Car licenseNumber = 00-aa-00 … : Car licenseNumber = 01-35-AP … janesCar : «ref» Car fredsCar : «ref» Car Referências: Objectos:
  • 26. 2013/2014 Fundamentos de Programação 26 johnsCar : Car licenseNumber = 00-aa-00 model =VW-GTI-TDI-SLK yearBuilt = 2005 lastInspectionDate = 2013-11-20 Car - licenseNumber : String … + getLicenseNumber() : String … Nome da classe AtributosOperações Acesso Nome do objecto Atributos Valores dos atributos
  • 27. Classe variável; variável = null; Classe outraVariável = null; Classe aindaOutraVariável = new Classe(…); 2013/2014 Fundamentos de Programação 27 Inicialização da referência com o valor especial null, que indica que referência não referencia qualquer objecto. Declaração da referência variável, não inicializada, capaz de referenciar objectos da classe Classe. Construção de um novo objecto e de uma referência que o referencia. Construção de uma referência com valor inicial nulo. Construçãodareferê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: int anInteger; anInteger = 10; int anotherInteger = 20; Construção do novo objecto Construçãodareferência
  • 28.  Usa-se operador . (ponto)  Objecto (característica de instância) referênciaParaObjecto.característica  Classe (característica de classe) Classe.característica 2013/2014 Fundamentos de Programação 28 Se a referência for nula (null), é lançada a excepção NullPointerException. Ou membros.
  • 29.  Tudo o que pode ser privado deve ser privado!  Regras gerais  Todos os atributos devem ser privados  Os construtores são usualmente públicos  As operações devem ser públicas  Os métodos auxiliares devem ser privados 2013/2014 Fundamentos de Programação 29 As constantes, pelo contrário, podem e muitas vezes devem ser públicas.
  • 30.  Interface  Operações não privadas  Constantes não privadas  Implementação  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 2013/2014 Fundamentos de Programação 30 não privado ≠ público etc.
  • 31.  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 2013/2014 Fundamentos de Programação 31 Acessibilidadecrescente Há promiscuidade entre objectos da mesma classe! Cuidado! Que é isto? Próximo diapositivo…
  • 32. 2013/2014 Fundamentos de Programação 32
  • 33. Pacote Pacote 2013/2014 Fundamentos de Programação 33 Classe Rotina Rotina Rotina Classe Rotina Rotina Rotina Classe Rotina Rotina Rotina Rotina Classe Rotina Rotina Classe Rotina Rotina Rotina Rotina
  • 34.  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  Prefixo é nome DNS invertido (e.g., pt.europeia)  Elementos após prefixo podem ser unidades organizacionais (e.g., pt.europeia.fp) 2013/2014 Fundamentos de Programação 34
  • 35.  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) 2013/2014 Fundamentos de Programação 35
  • 36.  java  lang  util  org  junit  omg  pt  europeia ▪ fp ▪ eda  Hierarquia aberta  Não têm declaração isolada  Cada ficheiro .java declara o pacote a que pertence 2013/2014 Fundamentos de Programação 36 package pt.europeia.fp public class Game { … } Game.java package pt.europeia.fp public class Player { … } Player.java
  • 37.  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 2013/2014 Fundamentos de Programação 37
  • 38. 2013/2014 Fundamentos de Programação 38 The type top.AtTop is not visibleThe type top.bottom.AtBottom is not visible
  • 39.  Uma só classe pública por ficheiro  Classe pública em ficheiro com mesmo nome  Número arbitrário de classes privadas de pacote (package-private) por ficheiro, mas…  Boa prática: Uma só classe por ficheiro! 2013/2014 Fundamentos de Programação 39
  • 40.  Usualmente, à hierarquia de pacotes corresponde uma hierarquia de directórios com os ficheiros correspondentes 2013/2014 Fundamentos de Programação 40 Depende da implementação do Java. No Eclipse (directórios/pastas) No Eclipse (pacotes)
  • 41.  Classes são modelos  Objectos são instâncias classes de referência  Em Java variáveis não são instâncias de classes, mas sim referências para instâncias de classes  Tudo o que pode ser privado deve ser privado  Classes devem organizar-se em pacotes 2013/2014 Fundamentos de Programação 41
  • 42.  Paradigmas da programação  Programação orientada por objectos  Modularização em pacotes 2013/2014 Fundamentos de Programação 42

Notas del editor

  1. Prosopopeia - Figura em que o orador atribui o dom da palavra, o sentimento ou a acção a seres inanimados ou irracionais, aos mortos ou aos ausentes. "prosopopeia", in Dicionário Priberam da Língua Portuguesa [em linha], 2008-2013, http://www.priberam.pt/dlpo/prosopopeia [consultado em 09-03-2015].
  2. As classes que não estão definidas dentro de outras classes (outer) só podem ser ou públicas ou privadas de pacote.