Upload
leanne
View
35
Download
4
Embed Size (px)
DESCRIPTION
Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1. Augusto Sampaio e Paulo Borba Departamento de Informática Universidade Federal de Pernambuco. Explorando Conceitos. Encapsulamento Módulos, pacotes Information hiding Mecanismos de visibilidade Tipos abstratos - PowerPoint PPT Presentation
Citation preview
Paradigmas de Linguagens de Programação
Linguagem Orientada a Objetos 1
Augusto Sampaio e Paulo Borba
Departamento de Informática
Universidade Federal de Pernambuco
Explorando Conceitos
• Encapsulamento– Módulos, pacotes
• Information hiding– Mecanismos de visibilidade
• Tipos abstratos• Objetos e classes• Pacotes e classes parametrizadas
Pacotes
• Grupo de declarações (variáveis, constantes, tipos, procedimentos, funções, classes, subpacotes)
• Agrupamento de conceitos fortemente relacionados
• Facilita entendimento, reuso e manutenção
• Encapsulamento
Pacotes com Informações Escondidas
• Pacotes com facilidades para exportar e esconder declarações:– Essenciais versus Auxiliares– O que? versus Como?
• Independência de detalhes de implementação
• Facilita reuso e manutenção
• Information hiding
• Tipos abstratos, objetos e classes
Tipos Abstratos
• Pacotes definindo tipos e escondendo a representação de seus elementos
• Estruturação: dados versus funções
• Tipo definido por operações, não valores
• Independência da representação dos elementos.
• Facilita reuso e manutenção
Tipos Abstratos (exemplo em Ada)
package directory_type is
type Dir is limited privateprocedure insert (dir : in out Dir;
name : in Name; number: in
Number);procedure lookup (...);private type DirNode; type Dir is access DirNode; type DirNode is record ... end record;
end
Package body directory_type isprocedure insert ( );-- codigo para insertprocedure lookup (...);-- codigo para lookup
end directory_type;
use directory_type;homedir : Dir;workdir: Dir;...insert (workdir, me, 6041);insert (homedir, me, 8715);lookup (workdir, me, mynumber, ok)
Objetos (forma primitiva)
• Pacotes definindo variáveis escondidas e exportando operações de acesso às mesmas
• Estruturação: dados versus funções
• Independência da representação das variáveis
• Controla como e em que ordem as variáveis podem ser acessadas
• Facilita reuso e manutenção
Objetos (forma primitiva)
• Similar a Tipo abstrato + Variável deste tipo, com certas restrições:– um dos argumentos de uma operação do tipo é a
variável utilizada para armazenar o resultado de tal operação
• Nessa forma, objetos são cidadãos de segunda classe: não podem ser argumentos ou resultados de operações, etc
• Não há herança ou dynamic binding
Objeto (exemplo em Ada)
package directory_object is
procedure insert (name : in Name; number: in Number);
procedure lookup (...); end directory_object;
package body directory_object is type DirNode; type DirPtr is access DirNode; type DirNode is record ... end record; root : DirPtr procedure insert ( ); -- codigo para insertprocedure lookup (...); -- codigo para lookup
begin...; -- inicializa diretorio
end directory_object;
use directory_object;directory_object.insert (me, 6041);directory_object.lookup (me, mynumber, ok)
Classes de objetos• Em Ada, usando um generic package
generic package directory_class is
-- como na def de directory_object ...
end directory_object;
package body directory_object ...
package homedir is new directory_class;
package workdir is new directory_class;
workdir.insert (me, 6041);
homedir.insert (me, 6041);
workdir.lookup (me, mynumber, ok);
Pacotes Parametrizados
• Pacotes são abstrações de declarações
• Abstrações podem ser parametrizadas
• Parâmetros: valores, tipos, pacotes, etc.
• O mesmo conceito pode ser aplicado para classes (templates de C++, generics de Java)
Leitura
• Programming Language Concepts and Paradigms– Capítulo 6
Exercícios e Projetos
• Estenda a Linguagem Orientada a Objetos 1 com os seguintes recursos:– Subtipos e herança múltipla de código– Expressão new para criação de objetos– Classes parametrizadas, como templates em C+
+– Pacotes como em Java– Tipos abstratos