Você está na página 1de 24

Introdução à Orientação por Objectos

José Correia, Março 2006


(http://paginas.ispgaya.pt/~jcorreia/)

Algumas questões...
„ Porque razão é o software inerentemente complexo?
„ Que técnicas são usadas para lidar com a complexidade?
„ O que é a Decomposição?
„ O que é e para que serve a Abstracção?
„ O que entende por Hierarquia?
„ O que é um Modelo?
„ Qual é a importância dos Modelos?
„ Porquê a Orientação por Objectos (OO)?
„ O que é um Objecto?
„ Quais são os princípios fundamentais da OO?
„ O que é e para que serve o Encapsulamento?
„ O que é o Polimorfismo?

José Correia Introdução à Orientação por Objectos 2

José Correia, ISPGaya 2006


Diferenças entre Hardware e Software?
„ A principal diferença é que o software é, de facto, “soft”
• o que é que isto significa?
„ O software é visto como sendo mais alterável que o hardware
• mas será mesmo?
„ Os utilizadores exigem mais flexibilidade no software
• querem soluções “à medida”, ... mas também genéricas/flexíveis Æ +$$$

„ No software ainda não atingimos o nível dos padrões de hardware


• existem poucos “circuitos integrados” de software, para permitir construir
rapidamente funcionalidades do sistema
• os componentes ainda não estão suficientemente divulgados
- excepto para os componentes de User Interface
• os Padrões/Modelos não são tão aceites como na engenharia e na
arquitectura.

José Correia Introdução à Orientação por Objectos 3

A Evolução do Software
„ Apesar da evolução verificada em diversos domínios...
• Linguagens: Assembler Æ Procedimentais Æ Estruturadas Æ OO
• Ferramentas: 3GL Æ 4GL Æ CASE
• Modelização: Estruturada(E-A), DFD, OMT, UML

... ainda enfrentamos os mesmos problemas de há três décadas atrás,


nomeadamente:
• Requisitos mal definidos
• Calendarizações ultrapassadas (ai a gestão de projectos!)
• Alteração das necessidades de negócio, não cobertas pelo software
• Projectos de grande dimensão

„ Mas há esperança...

José Correia Introdução à Orientação por Objectos 4

José Correia, ISPGaya 2006


Engenharia de Software
„ Os modelos do ciclo de vida do desenvolvimento de software
compreendem várias fases bem definidas
• Exemplo (antigo): Modelo em cascata (waterfall)

Análise
Análise

Projecto
Projecto

• Outros exemplos: Implementação


Implementação
- Modelo em Espiral
Testes
Testes
- Modelo Incremental
- Modelo Iterativo Manutenção
Manutenção
- …

„ A engenharia de software é o ramo da engenharia que visa o


desenvolvimento de sistemas de software de qualidade

José Correia Introdução à Orientação por Objectos 5

Qualidade do Software
„ Como definir (caracterizar) um software de qualidade?

„ A qualidade é uma noção multi-facetada descrita por um conjunto de


factores externos e internos

„ O software de qualidade deve ter um conjunto de características:

• correcto • reutilizável
• fácil de usar • verificável
• robusto • compatível
• eficiente • modular (interno)
• expansível • compreensível (interno)
• portável

José Correia Introdução à Orientação por Objectos 6

José Correia, ISPGaya 2006


Porque razão é o software inerentemente
complexo?
„ Sistemas de software simples e complexos
• Os sistemas especificados, construídos, mantidos e usados por uma
mesma pessoa são, normalmente, sistemas simples
... mas os sistemas com que nos deparamos na indústria do software são,
normalmente, sistemas complexos

„ A complexidade diz-se ser uma propriedade inerente ao software


porque, apesar de contornável, não é eliminável. Porquê?
• Essencialmente, por 4 razões principais:
- Complexidade do domínio do problema
- Dificuldade na gestão do processo de desenvolvimento do software
- A Flexibilidade tornada possível pelo software
- Dificuldade em caracterizar o comportamento de sistemas discretos

José Correia Introdução à Orientação por Objectos 7

Complexidade do Software: Domínio do Problema


„ Existência de requisitos incompletos e até contraditórios
(inconsistentes )

„ Existência de requisitos difíceis de compreender


• Funcionalidades e comportamentos complexos

„ Dificuldades de comunicação entre os utilizadores do sistema e as


pessoas envolvidas no seu desenvolvimento
• ver exemplo do baloiço

„ Os requisitos do sistema mudam durante o seu desenvolvimento

José Correia Introdução à Orientação por Objectos 8

José Correia, ISPGaya 2006


Complexidade do Software: Processo Desenvolvimento

„ O software construído acaba sempre


por ser composto por milhares e
milhares de linhas de código

„ A não ser as pequenas aplicações (construídas isoladamente por


indivíduos), o desenvolvimento de software exige o trabalho
coordenado de várias pessoas

José Correia Introdução à Orientação por Objectos 9

Complexidade do Software: Processo Desenvolvimento


(cont.)

„ Há quem tenha a ilusão de que desenvolver software é simples...

… mas, atenção, a aparência é só uma ilusão!

José Correia Introdução à Orientação por Objectos 10

José Correia, ISPGaya 2006


Complexidade do Software: Flexibilidade
„ É possível exprimir em software qualquer tipo de abstracção (ou
quase) e, por isso, ...
... sendo possível desenvolver todos os elementos de software desde o zero
... a atitude típica de um programador é a de que “… é tudo uma questão de
programação”

„ Faça-se, por exemplo, a comparação entre a indústria da construção


civil e a indústria do software...
• A construção civil é uma indústria caracterizada pela existência de
elementos básicos de construção (blocos, módulos, normas, técnicas), a
partir dos quais novos elementos são desenvolvidos.
• Se assim não fosse, imaginem a quantidade de pontes e prédios que
cairiam… sem haver botão de <Reset>...

José Correia Introdução à Orientação por Objectos 11

Complexidade do Software: Sistemas discretos


„ O estado de uma aplicação é caracterizado:
• pelos valores actuais de milhares de variáveis;
• por algumas dezenas de fluxos de controlo (processos, threads);
• pela chamada encadeada de centenas de funções.

„ Em sistemas de grande dimensão, o número de estados possíveis é


bastante grande (praticamente infinito)

„ Alguns dos estados podem não ter sido previstos (e é o que


normalmente acontece)

„ Eventos externos ao sistema podem conduzi-lo a estados


indesejáveis

José Correia Introdução à Orientação por Objectos 12

José Correia, ISPGaya 2006


Walker Royce

Dimensões da complexidade do software


Higher technical complexity
- Embedded, real-time, distributed, fault-tolerant
- Custom, unprecedented, architecture reengineering
- High performance

An average software project:


- 5-10 people Defense
- 10-15 month duration Telecom Weapon System
- 3-5 external interfaces Switch
National Air Traffic
- Some unknowns & risks Commercial Control System
Embedded Compiler
Automotive
Software Large-Scale
Lower CASE Tool Organization/Entity
Simulation
Higher
management management
complexity Small Scientific complexity
- Small scale Simulation - Large scale
- Informal IS Application - Contractual
Distributed Objects Enterprise IS Defense
- Single stakeholder (Family of IS MIS System - Many stake holders
(Order Entry)
- “Products” Applications) - “Projects”
IS Application
GUI/RDB
(Order Entry)
Business
Spreadsheet

Lower technical complexity


- Mostly 4GL, or component-based
- Application reengineering
- Interactive performance

José Correia Introdução à Orientação por Objectos 13

Complexidade do Software: “Forças” no software

“The challenge over the next 20 years will not be speed or cost or
performance; it will be a question of complexity.”
Bill Raduchel, Chief Strategy Officer, Sun Microsystems

“Our enemy is complexity, and it’s our goal to kill it.”


Jan Baan

José Correia Introdução à Orientação por Objectos 14

José Correia, ISPGaya 2006


Atributos de um Sistema Complexo
„ Os 5 atributos de um sistema complexo:
1. Um sistema é sempre parte constituinte de um outro sistema e ele
próprio é passível de ser decomposto em sub-sistemas
- Todos os sistemas têm sub-sistemas.
2. O que é primitivo para um observador pode estar a um nível mais
elevado de abstracção para outro observador
- A escolha dos componentes primitivos dum sistema é arbitrária, e é subjectiva
ao observador.
3. Poder separar as responsabilidades inerentes a cada uma das partes
que constituem o sistema e, como tal, estudar em isolamento cada uma
das partes
4. Os sistemas hierárquicos são, normalmente, compostos por poucos tipos
de subsistemas diferentes, mas dispostos em combinações várias
5. Um sistema complexo que funcione é fruto da evolução dum sistema
mais simples que funcionava

José Correia Introdução à Orientação por Objectos 15

Complexidade do Software: Limitações Humanas


„ As (in)capacidades do ser humano...
• A capacidade do ser humano em lidar com a complexidade é limitada
• Nos processos de análise e design do software, somos levados a pensar
simultaneamente em muitas coisas
• A compreensão de todos os aspectos de um sistema complexo é muito
difícil de conseguir por uma só pessoa
• Os sistemas complexos quase sempre excedem a capacidade intelectual
humana
• Experiências levadas a cabo por especialistas, sugerem que o número
máximo de blocos de informação que um indivíduo pode assimilar de uma
só vez é de 7 (mais ou menos 2)
• O tempo (significativo) de processamento
é outro dos nossos factores limitativos

José Correia Introdução à Orientação por Objectos 16

José Correia, ISPGaya 2006


Complexidade do Software (cont.)
„ Consequências de não restringir a complexidade:
• Quanto mais complexo é um sistema, mais sujeito está à ruptura;
• Projectos terminados para além dos prazos e custos previstos;
• Projectos que não cumprem na íntegra os requisitos.

„ Então, como lidar com o aumento progressivo da complexidade do


software, sabendo que a nossa capacidade de lidar com a
complexidade apresenta limites importantes?

„ Usando as seguintes técnicas:


• Decomposição
• Abstracção
• Hierarquia

José Correia Introdução à Orientação por Objectos 17

Técnicas usadas para lidar com a complexidade


do software
Decomposição
„ “Divide et impera” (“dividir para reinar”)
• a estratégia (de sucesso) dos romanos há mais de 2000 anos, era lutar
com um povo de cada vez, em vez de os enfrentar todos ao mesmo
tempo

„ Ao projectar (conceber) um sistema, é essencial que o mesmo seja


decomposto em partes suficientemente pequenas, que sejam de fácil
compreensão e que possam ser refinadas de forma isolada

„ Técnicas de Decomposição
• Decomposição algorítmica
• Decomposição orientada por objectos

José Correia Introdução à Orientação por Objectos 18

José Correia, ISPGaya 2006


Decomposição (cont.)
Decomposição algorítmica (ilustra a ordem dos eventos)
„ top-down structured design – abordagem clássica dos anos 70 e 80
• Tradicionalmente, a modelização em software passava pela sua
decomposição algorítmica ou funcional.

„ O projecto do sistema é orientado às funções ou processos


desenvolvidos pelo sistema
• as funções são organizadas de forma sequencial
- primeiro é feito isto, a seguir aquilo, depois …

„ Cada um dos módulos funcionais do sistema é parte de outro mais


vasto
• o problema é decomposto numa sequência de passos funcionais

José Correia Introdução à Orientação por Objectos 19

Decomposição (cont.)
Decomposição orientada aos objectos
„ Técnica usada a partir de meados dos anos 90

„ O sistema é composto por um conjunto de objectos (caracterizados


por um conjunto de atributos), responsáveis por desempenharem
determinadas tarefas e por colaborarem com outros objectos com o
intuito de serem satisfeitos os requisitos definidos para o sistema

„ Um objecto é algo (coisa, mecanismo, conceito, …) que exibe


determinado comportamento e que efectua operações (algumas das
quais invocadas por outros objectos)

José Correia Introdução à Orientação por Objectos 20

José Correia, ISPGaya 2006


Técnicas usadas para lidar com a complexidade
do software (cont.)
Abstracção
„ Consiste em ignorar detalhes não essenciais para o problema

„ A abstracção foca a perspectiva externa de um objecto

„ Serve para separar os aspectos essenciais de comportamento de um


objecto da sua implementação

„ “A concept qualifies as an abstraction only if it can be described,


understood, and analyzed independently of the mechanism that will
eventually be used to realize it”.

José Correia Introdução à Orientação por Objectos 21

Técnicas usadas para lidar com a complexidade


do software (cont.)
Hierarquia
„ As formas de hierarquia mais importantes, são:
• hierarquia “is-a” (generalização ou especialização)
• hierarquia “é parte de”

„ A hierarquia de objectos (agregações) ilustra a forma como os


diferentes objectos colaboram e interagem entre si (mecanismos)
„ A hierarquia de classes (generalizações) evidencia a redundância do
sistema
• identifica estruturas e comportamentos comuns dentro do sistema.

„ A hierarquia tem a ver com a forma como as abstracções são


ordenadas

José Correia Introdução à Orientação por Objectos 22

José Correia, ISPGaya 2006


Porquê modelizar?
„ “Porquê modelizar?” é o título de um artigo de James Rumbaugh que
tenta responder a essa pergunta
• “Why do we model?”, James Rumbaugh, Object Magazine, SIGS, 1998

„ Do mesmo modo que antes de se construir uma casa se fazem


inúmeros desenhos correspondentes aos diversos tipos de projectos
necessários (arquitectura, engenharia civil, electricidade, esgotos,
etc.)...
... antes de se avançar com a implementação em software também é
necessário criar modelos.

„ Para desenvolver software de qualidade, em equipa e dentro de


prazos úteis, então é fundamental modelizar.

José Correia Introdução à Orientação por Objectos 23

Modelização
„ “A modelização é uma técnica de engenharia aceite e comprovada.
Fazem-se modelos de casas e prédios para ajudar a imaginar o
impacto final na paisagem, definem-se modelos matemáticos para nos
ajudar a prever catástrofes naturais, etc.” Grady Booch

José Correia Introdução à Orientação por Objectos 24

José Correia, ISPGaya 2006


Modelização (cont.)
„ O que é um modelo?
• um modelo é uma representação da realidade

„ Uma definição...
• um modelo é uma abstracção de algo real, ou não, que tem o propósito de
promover a sua compreensão antes de se iniciar a sua construção ou
modificação

„ Um modelo deverá ser mais simples do que a realidade que modeliza


• no entanto, esta simplificação da realidade não deverá ser tão grande que
o modelo não tenha nada a ver com a realidade

„ O que se modeliza?
• o objecto da modelização num projecto de desenvolvimento de software
são os requisitos dos produtos que resultarão desse mesmo projecto, ou
seja, a descrição do problema

José Correia Introdução à Orientação por Objectos 25

A importância dos Modelos


„ Simplificar a Realidade
• os modelos omitem detalhes não essenciais, que os tornam mais fáceis
de tratar do que a entidade original

„ Facilitar a percepção de Sistemas Complexos


• a construção de modelos apela aos princípios da decomposição,
abstracção e hierarquia, que são as principais “ferramentas mentais”
que temos para lidar com a complexidade
• os modelos são a linguagem dos projectistas em muitas disciplinas

„ Possibilitar testes controlados


• os modelos permitem-nos testar, e falhar, em situações controladas
- Exemplo: Testes de carga numa ponte

José Correia Introdução à Orientação por Objectos 26

José Correia, ISPGaya 2006


Orientação por Objectos
„ A Orientação por Objectos (OO) é mais do que um paradigma de
programação

„ A OO aplica-se a várias actividades relacionadas com as tecnologias


de informação:
• Análise de requisitos
• Desenho de software
• Construção e testes de sistemas de software
• Processos

„ A ideia central da OO consiste na construção de modelos de


sistemas, em torno de entidades que unificam dados e procedimentos:
os Objectos!

José Correia Introdução à Orientação por Objectos 27

Objectos
„ “Um objecto é algo que possui estado, comportamento e
identidade, e pode ser definido de uma forma bastante precisa.”

José Correia Introdução à Orientação por Objectos 28

José Correia, ISPGaya 2006


Objectos (cont.)
„ Na abordagem OO, as entidades do mundo real são vistas como uma
colecção de objectos cooperantes

„ Os objectos correspondem directamente a coisas, pessoas, ou


processos existentes no mundo real

„ Num modelo orientado por objectos, as características do mundo real


são representadas por atributos (estruturas de dados) e os
comportamentos por operações (funções).

„ Cada objecto é uma instância de uma classe


• O que é uma classe? Iremos ver mais à frente...

„ A estrutura e o comportamento de objectos idênticos são definidos


na sua classe comum.

José Correia Introdução à Orientação por Objectos 29

Desenvolvimento OO
„ Um sistema desenvolvido por meio de uma metodologia OO, é
composto por um conjunto de objectos que interactuam e colaboram
uns com os outros ao longo do tempo
• a funcionalidade e comportamento global de sistema, é o resultado destas
interacções

„ A essência do desenvolvimento OO está na identificação e


organização dos conceitos do domínio de aplicação e não na sua
representação em determinada linguagem, seja ela orientada aos
objectos ou não
• o desenvolvimento OO é um processo conceptual independente da
linguagem de programação até aos últimos estágios
• o desenvolvimento OO é uma forma de abordar e de pensar os problemas
e não uma técnica de programação

José Correia Introdução à Orientação por Objectos 30

José Correia, ISPGaya 2006


Análise, Design e Programação OO
„ Análise OO
• Método de análise que examina os requisitos do sistema de uma
perspectiva orientada às classes e objectos normalmente encontrados no
vocabulário do domínio do problema

„ Design OO
• Método de design baseado no processo de decomposição OO e utilizando
uma notação própria para a construção de modelos do sistema a
projectar

„ Programação OO
• Método de implementação através do qual os programas são
organizados num conjunto de objectos que interagem uns com os outros

José Correia Introdução à Orientação por Objectos 31

Princípios OO fundamentais
„ Abstracção
„ Encapsulamento
„ Modularidade
„ Hierarquia
„ Tipos e Polimorfismo
„ Concorrência
„ Persistência

José Correia Introdução à Orientação por Objectos 32

José Correia, ISPGaya 2006


Princípios OO fundamentais: Abstracção

José Correia Introdução à Orientação por Objectos 33

Princípios OO fundamentais: Abstracção (cont.)


„ “A abstracção salienta as características dum objecto consideradas
essenciais e que o distinguem de todos os outros tipos de objectos,
fornecendo contornos muito bem definidos, relativamente à
perspectiva do utilizador.”

„ A abstracção encerra todo o comportamento importante dum objecto.

„ Uma boa abstracção enfatiza os detalhes que são significativos para o


leitor, ou utilizador,...
... e suprime os detalhes que são irrelevantes (pelo menos naquela
altura).

José Correia Introdução à Orientação por Objectos 34

José Correia, ISPGaya 2006


Princípios OO fundamentais: Encapsulamento

José Correia Introdução à Orientação por Objectos 35

Princípios OO fundamentais: Encapsulamento (cont.)


„ “Encapsulamento é o processo de esconder todos os detalhes dum
objecto, que não contribuem para a definição das suas características
essenciais.”

„ Exemplo de encapsulamento:
• No desenvolvimento de uma aplicação baseada numa Base de Dados
relacional, constróem-se programas que não dependem da representação
física dos dados, mas sim do esquema que especifica a perspectiva lógica
dos dados.

„ Nenhuma parte de um sistema complexo deve depender dos detalhes


internos de qualquer outra parte desse sistema

„ O encapsulamento facilita a alteração e evolução

José Correia Introdução à Orientação por Objectos 36

José Correia, ISPGaya 2006


Abstracção vs. Encapsulamento
„ A abstracção e o encapsulamento são complementares
• Abstracção: Ajuda as pessoas a pensarem naquilo que estão a fazer;
• Encapsulamento: Permite que as alterações efectuadas no software
sejam localizadas, de fácil acesso e simples modificação;
• A abstracção incide sobre a visão externa dum objecto (interface);
• O encapsulamento oculta o interior de um objecto, colocando uma barreira
entre os níveis lógico e físico da representação (implementação).

„ A implementação deve ser encarada como um segredo da abstracção


e escondida de todos os utilizadores (clientes) dessa abstracção
• Tipicamente, devem ser escondidos:
- A estrutura do objecto;
- A implementação dos seus métodos (operações).

José Correia Introdução à Orientação por Objectos 37

Princípios OO fundamentais: Modularidade

José Correia Introdução à Orientação por Objectos 38

José Correia, ISPGaya 2006


Princípios OO fundamentais: Modularidade (cont.)
„ “Modularidade é a propriedade dum sistema que foi decomposto num
conjunto de módulos coesos e fracamente interligados.”
„ Atenção! Uma divisão em módulos feita de forma arbitrária, pode ser
pior do que se não for feita qualquer divisão.

„ No projecto estruturado, a modularização consiste em agrupar sub-


programas.

„ No projecto OO, a modularização consiste em agrupar classes e


objectos
• Os módulos podem ser vistos como recipientes físicos, nos quais
declaramos classes e objectos

José Correia Introdução à Orientação por Objectos 39

Princípios OO fundamentais: Hierarquia

José Correia Introdução à Orientação por Objectos 40

José Correia, ISPGaya 2006


Princípios OO fundamentais: Hierarquia (cont.)
„ O encapsulamento oculta detalhes
• e com isso simplifica a visão das abstracções, ao ocultar o seu interior

„ Os módulos ajudam a agrupar conceitos


• i.e., ajudam a agrupar as abstracções logicamente relacionadas

„ A identificação de hierarquias num sistema, simplifica a nossa


compreensão do problema, ao dar uma visão ordenada das
abstracções
„ “Hierarquia é um conjunto ordenado de abstracções”
„ O nosso “brainware” é limitado!
• O número de abstracções diferentes que temos que identificar é quase
sempre superior às que conseguimos entender em simultâneo.

José Correia Introdução à Orientação por Objectos 41

Princípios OO fundamentais: Herança

José Correia Introdução à Orientação por Objectos 42

José Correia, ISPGaya 2006


Princípios OO fundamentais: Hierarquia/Herança

„ O mecanismo de herança é um elemento essencial dos sistemas OO

„ A herança define uma relação entre classes, em que uma classe


partilha a estrutura, ou comportamento, definido numa ou mais
classes (herança simples ou múltipla)

„ Super-classes representam abstracções generalizadas,


enquanto que as sub-classes representam
especializações das super-classes
• Super-classes? Sub-classes?
• Iremos falar nisto mais à frente...

José Correia Introdução à Orientação por Objectos 43

Princípios OO fundamentais: Tipos e Polimorfismo


„ O polimorfismo é um conceito da teoria de tipos, no qual um único
nome pode referir objectos de classes diferentes, se relacionadas por
super-classes comuns.
„ Exemplo:
class Polygon {void draw();};
class Rectangle:Polygon {void draw();};
main() {
Polygon p; r
Rectangle r;
… p
p=r; //correcto!
P.draw(); r

r=p; //incorrecto!
}

„ O polimorfismo surge quando a linguagem de programação suporta


herança e a associação dinâmica de tipos.

José Correia Introdução à Orientação por Objectos 44

José Correia, ISPGaya 2006


Princípios OO fundamentais: Concorrência
„ “Concorrência é a propriedade que distingue um objecto activo dum
outro que não é.”

„ A concorrência incide sobre a abstracção e sincronização de


processos.

„ Aos objectos que representam uma abstracção dum processo,


chamam-se objectos activos.

„ Sistema OO = Conjunto de objectos que cooperam entre si, alguns


dos quais são activos e servem como centros de actividade
independente (agentes?)

José Correia Introdução à Orientação por Objectos 45

Princípios OO fundamentais: Persistência


„ “Persistência é a propriedade dum objecto, através da qual a sua
existência transcende o tempo (isto é, continua a existir após o seu
criador ter deixado de existir) e/ou o espaço (isto é, a localização do
objecto muda-se do espaço no qual foi criado).”

„ Existem objectos com tempos de vida desde o transitório até ao


persistente.

„ A unificação dos conceitos de concorrência e de objectos dá origem a


linguagens de programação concorrente orientadas por objectos.

„ A introdução do conceito de persistência no modelo de objectos, dá


origem às bases de dados orientadas por objectos.

José Correia Introdução à Orientação por Objectos 46

José Correia, ISPGaya 2006


Princípios OO fundamentais: Resumo
„ Abstracção - Ilustra as características essenciais de um objecto
„ Encapsulamento - Oculta os detalhes de um objecto
„ Modularidade - É a propriedade de um sistema que foi decomposto
num conjunto de módulos coesos e fracamente ligados
„ Hierarquia - Ordena as abstracções de um sistema
„ Tipos e Polimorfismo - Associam os objectos às suas classes,
restringindo a sua troca
„ Concorrência - É a propriedade que distingue objectos activos de
passivos
„ Persistência - É a propriedade de um objecto através da qual a sua
existência transcende o tempo e/ou espaço

José Correia Introdução à Orientação por Objectos 47

Referências
Estes apontamentos foram baseados em:
„ “UML – Unified Modeling Language”, Curso em Tecnologia de
Objectos, FEUP, Novembro 2000
Ademar Aguiar, Gabriel David, João Pascoal Faria
„ “A complexidade do software”, César Toscano, ISPGaya, Novembro
1998
„ “Desenvolvimento OO – Construção de modelos para a análise e
design de sistemas”, César Toscano, ISPGaya, Novembro 1998
„ “Software Architecture and the UML”
Grady Booch, Rational Software
„ “Porquê modelizar?”, José Maria Bonnet, ISPGaya, Outubro de 1999

José Correia Introdução à Orientação por Objectos 48

José Correia, ISPGaya 2006

Você também pode gostar