130 likes | 240 Views
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
E N D
Paradigmas de Linguagens de ProgramaçãoLinguagem 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
package directory_type is type Dir is limited private procedure 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 is procedure insert ( ); -- codigo para insert procedure 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) Tipos Abstratos (exemplo em Ada)
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
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 insert procedure lookup (...); -- codigo para lookup begin ...; -- inicializa diretorio end directory_object; use directory_object; directory_object.insert (me, 6041); directory_object.lookup (me, mynumber, ok) Objeto (exemplo em Ada)
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