13
Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1 Augusto Sampaio e Paulo Borba Departamento de Informática Universidade Federal de Pernambuco

Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

  • 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

Page 1: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

Paradigmas de Linguagens de Programação

Linguagem Orientada a Objetos 1

Augusto Sampaio e Paulo Borba

Departamento de Informática

Universidade Federal de Pernambuco

Page 2: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

Explorando Conceitos

• Encapsulamento– Módulos, pacotes

• Information hiding– Mecanismos de visibilidade

• Tipos abstratos• Objetos e classes• Pacotes e classes parametrizadas

Page 3: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

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

Page 4: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

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

Page 5: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

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

Page 6: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

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)

Page 7: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

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

Page 8: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

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

Page 9: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

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)

Page 10: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

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);

Page 11: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

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)

Page 12: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

Leitura

• Programming Language Concepts and Paradigms– Capítulo 6

Page 13: Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1

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