Programação Orientada por Objectos - Aula 1

Embed Size (px)

DESCRIPTION

Aula teórica 1 da unidade (disciplina) de Programação Orientada por Objectos dos cursos de LIGE, LEI e LETI no ISCTE-IUL no 2.º semestre do ano lectivo de 2009/2010.

Text of Programação Orientada por Objectos - Aula 1

  • 1. Aula 1
    Introduo programao orientada por objectos
    Classes, objectos e referncias (reviso)
    Modularizao em pacotes
    Organizao em ficheiros e directrios

2. Programao estruturada
Forma
Instncias de tipos escalares ou matriciais
Instrues organizadas em estruturas de controlo
Sem modularizao
Melhorias
Melhora estruturao do fluxo de controlo dos programas
Possibilita raciocnio formal acerca de programas
Aumenta legibilidade dos programas face ao passado (programao esparguete)
2008/2009
Programao Orientada por Objectos
2
Organizao do cdigo em mdulos, i.e., cpsulas com objectivos bem definidos contendo uma implementao oculta e expondo ao exterior uma interface. A modularizao favorece a abstraco.
3. Programao procedimental
Forma
Instncias de tipos escalares ou vectoriais
Instrues organizadas em estruturas de controlo
Instrues e estruturas de controlo organizadas em rotinas
Modularizao em rotinas
Funes Devolvem resultado de um clculo
Procedimentos Agem sobre dados, modificando-os
Melhorias
Possibilita encapsulamento
Facilita reutilizao
Melhora localizao de erros e facilita manuteno
Possibilita maximizao da coeso e minimizao das ligaes
2010-03-30
Programao Orientada para Objectos
3
4. Programao baseada em objectos ou centrada nos dados
Forma
Instncias de tipos escalares ou vectoriais, ou de TAD (tipos abstractos de dados)
Instrues organizadas em estruturas de controlo
Instrues e estruturas de controlo organizadas em rotinas
Rotinas relacionadas organizadas em TAD
Modularizao
TAD Conjunto de dados e operaes
Operaes Rotinas que operam sobre instncias de TAD
Melhorias
Melhora encapsulamento (dados e operaes relacionadas)
Possibilita ocultao dos dados
Muda perspectiva sobre os problemas
2008/2009
Programao Orientada por Objectos
4
5. Programao orientada por objectos
Forma
Instncias de classes (objectos), de tipos escalares ou vectoriais, ou de TAD (tipos abstractos de dados)
Instrues organizadas em estruturas de controlo
Instrues e estruturas de controlo organizadas em rotinas
Rotinas relacionadas organizadas em TAD
Operaes relacionadas organizadas em classes
Modularizao
Classes Modelos para objectos com um dado comportamento
TAD Conjunto de dados e operaes
Operaes Rotinas que operam sobre instncias de TAD
Mtodos Implementao das operaes
Melhorias
Introduz noes de extenso e especializao
Muda drasticamente perspectiva sobre os problemas
2008/2009
Programao Orientada por Objectos
5
6. Programao orientada por objectos: classes
Paradigmas usados
Programao estruturada Controlo de fluxo
Programao procedimental Rotinas
Programao centrada nos dados TAD e operaes
Vantagens
Melhor modularizao
Melhor encapsulamento
Maior possibilidade de reutilizao
Possibilidade de extenso e especializao
Maior expressividade
Maior flexibilidade
Maior robustez
2008/2009
Programao Orientada por Objectos
6
7. Programao orientada por objectos: encapsulamento
Interface:
Operaes Implementadas em um ou mais mtodos
Propriedades Podem ou no ser implementadas usando atributos
Implementao
Mtodos Implementao de operaes
Atributos Dados que fazem parte da implementao da classe
2008/2009
Programao Orientada por Objectos
7
8. Programao orientada por objectos: abordagem
Tudo (ou quase) so objectos
Objectos tm responsabilidades, comportamentos e propriedades
Organizao de programas reflecte realidade
mas os objectos so personalizados
2008/2009
Programao 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. Programao orientada por objectos: anlise e desenho
Anlise do problema
Que objectos existem?
Que responsabilidades tm?
Como colaboram?
Como classificar os objectos?
Desenho da soluo
Que classes definir?
Que objectos construir?
Que responsabilidades lhes atribuir?
De que forma os fazer colaborar?
2008/2009
Programao Orientada por Objectos
9
10. Classes e objectos
Classes
So tipos
So modelo ou projecto para construo de objectos com caractersticas comuns
Declaram-se ou definem-se
Definem conjunto de possveis objectos
Exemplos: humano, carro
Objectos
So instncias de classes
Constroem-se
Exemplos: Manuel Silva, o carro do Manuel Silva
2008/2009
Programao Orientada por Objectos
10
11. Classes e objectos
Classes
Representam objectos com caractersticas comuns
Favorecem abstraco (consumidor s conhece interface)
Permitem encapsulamento (implementao oculta)
Possibilitam reutilizao (por especializao ou instanciao)
Objectos
Modelam ou representam entidades reais (carro) ou virtuais (compra)
Tm identidade prpria
Tm estado total ou parcialmente observvel atravs da interface
2008/2009
Programao Orientada por Objectos
11
12. Tipos de referncia e tipos de valor
Tipos de referncia
Identidade relevante
Igualdade usualmente no relevante
Tipos de valor
Igualdade relevante
Identidade no relevante
2008/2009
Programao Orientada por Objectos
12
Classes Java.
Tipos primitivos em Java.
13. Classes em Java
Definem conjunto de caractersticas (propriedades e operaes) comuns a todas as suas instncias.
2010-03-30
Programao Orientada para Objectos
13
Car
- licenseNumber : String
- model : String
- yearBuilt : int
- lastInspectionDate : Date
implementao
interface
+ getLicenseNumber() : String
+ getModel() : String
+ getLastInspectionDate() : Date
+ getYearAge() : int
+ getNextInspectionDate() : Date
+ isInspected() : boolean
+ setInspectedToday()
Propriedades
Operao
14. Objectos em Java
Instncias de uma classe com valores especficos nos seus atributos e, por isso, com propriedades bem definidas.
2010-03-30
Programao Orientada para Objectos
14
johnsCar : Car
licenseNumber = 00-aa-00
model = VW-GTI-TDI-SLK
yearBuilt = 2005
lastInspectionDate = 2009-11-20
15. Operaes e mtodos em Java
Operaes
Parte da interface da classe
Invocam-se
Mtodos
Parte da implementao da classe
Executados quando se invoca a operao correspondente
Uma nica operao pode ser implementada por vrios mtodos
2008/2009
Programao Orientada por Objectos
15
Como? Usando polimorfismo de subtipos, que se ver mais tarde.
16. Construtores em Java
Inicializam objectos quando estes so construdos
Colocam objectos num estado inicial vlido (cumprindo o a condio invariante de instncia)
2008/2009
Programao Orientada por Objectos
16
17. Operaes em Java
Modificadoras Alteram o estado do objecto e possivelmente do resto do programa ou seu ambiente (so procedimentos)
No modificadoras No alteram o estado do objecto
Inspectoras Devolvem uma qualquer propriedade do objecto e no tm efeitos laterais (so funes)
Alter-modificadoras Alteram o estado do programa ou do seu ambiente sem alterar o objecto (so procedimentos)
2008/2009
Programao Orientada por Objectos
17
18. Operaes em Java: boas prticas
Cada operao deve ter um objectivo (uma funo) nico e bem definido
Operaes inspectoras Nome reflecte aquilo que devolvem
Outras operaes Nome reflecte a aco que realizam
Uma operao no deve tentar ser simultaneamente inspectora e modificadora (funo e procedimento)
2008/2009
Programao Orientada por Objectos
18
19. Caractersticas de classe
Classes so pseudo-objectos fbrica das suas instncias
Pseudo-objectos fbricas tm caractersticas de classe
Em Java declarao de atributos e mtodos de classe precede-se do qualificador static
Boas prticas
Evitar caractersticas de classe!
Usar apenas para definir constantes!
Exemplo
Math.PI
2008/2009
Programao Orientada por Objectos
19
Por oposio s caractersticas de instncia.
20. Referncias e objectos
CarjohnsCar = newCar("00-aa-00", );
CarjanesCar = johnsCar;
CarfredsCar = newCar(johnsCar);
2010-03-30
Programao Orientada para Objectos
20
Construtor por cpia!
johnsCar, janesCar : Car
fredsCar : Car
licenseNumber = 00-aa-00

licenseNumber = 00-aa-00

Hmmm. Mesma matrcula??
21. Referncias e objectos
CarjohnsCar = newCar("00-aa-00", );
CarjanesCar = johnsCar;
CarfredsCar = newCar(johnsCar);
2010-03-30
Programao Orientada para Objectos
21
Referncias:
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
Programao Orientada para Objectos
22
Nome
Acesso
Nome do objecto
Atributos
Atributos
Operaes
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. Referncias e objectos: declarao e construo
Classevarivel;
varivel = nul