Embed
Email

Tipos Abstratos de Dados

Document Sample
Tipos Abstratos de Dados
Shared by: HC111211001944
Categories
Tags
Stats
views:
6
posted:
12/10/2011
language:
pages:
22
Tipos Abstratos de Dados









Conceituação

Propriedades

Utilização

Exemplos

Evolução do modelo imperativo





 Modelo imperativo: baseado em representação

de dados e seqüência de ações sobre os dados

modelo procedural modelo de objetos

tipos de dados TADS classes

classes são tipos de dados em Linguagens

Orientadas a Objetos

 Mecanismos de LP

modelo procedural: encapsulamento, proteção e

polimorfismo estático

modelo de objetos: herança e polimorfismo dinâmico

Descrição de tipos

relembrando...



Nome: designação do tipo. Ex. Boolean

Valores : domínio de valores. Ex. Valores lógicos:

verdadeiro/falso

Operações: repertório de operações permitidas Ex.

Negação, conjunção, disjunção.

Testes : relações de igualdade, ordem e outros

predicados. Ex. relação de igualdade

Constantes: forma de representação de constantes.

Ex. True , False

Tipos primitivos: exemplo de abstração



// float: abstração de um número em ponto flutuante

float a, b, c, s;

// tipo de dados é associado a um domínio de valores

b = 1.0;

c = 2.0;

// tipo de dados é associado a conjunto de operações

a = b + c; a+=; c++;

// tipo de dados associado a uma representação interna

8 bits, 16 bits, 32 bits ...



Abstração de representação

Abstração de operações

Tipos ‘padrão’ e Tipos Abstratos



Tipos ‘padrão”: Tipos abstratos: novos

repertório de tipos de tipos criados pelo usuário

dados oferecidos pela LP Estendem o conjunto

primitivos padrão de tipos

estruturados

Devem oferecer

Predefinem representação

representação operações

operações

Sempre são definidos

Podem ser definidos pelo pelo usuário

usuário no próprio bibiotecas padrão

programa bibliotecas de

fornecedores diversos

Tipos definidos pelo usuário



Mnemônicos associados a tipos existentes

Sinonímia: não criam novos tipos de dados; apenas

usam identificadores simbólicos.

Composição: podem ser combinados com outros

tipos de dados.

Permitem restrições / enumerações

Objetivo principal: legibilidade

type

TS = ( verde, vermelho, azul);

VetorCor = array [TS] of boolean;

var { instanciação }

Cor : VetorCor;

Tipo Abstrato de Dado: definição





 É um tipo de dados que satisfaz as seguintes

condições:

a representação ou definição do tipo e as operações

sobre objetos do tipo estão contidas em uma única

unidade sintática

outras unidades do programa podem ter permissão

para criar variáveis do tipo definido

a representação dos objetos não é visível pelas

unidades do programa que usam o tipo

as operações sobre os objetos são aquelas

oferecidas na definição do tipo

Fonte: Sebesta: Conceitos de Linguagens de Programação

Tipos Abstratos de Dados: exemplo



Combinam as abstrações de dados e de

procedimentos

abstrações de dados: fornecem a representação do

tipo

abstrações de procedimentos: fornecem as

operações sobre o tipo





E4 Operações

Representação: Empilha

Array E3

Desempilha

E2 Topo da pilha

E1 Pilha vazia?

TADs: propriedades



Satisfazem as propriedades de

- encapsulamento: definição isolada de outras

unidades do programa

- invisibilidade e proteção: representação do tipo

deve ser acessada somente no ambiente

encapsulado

A LP deve possibilitar

ambiente encapsulado

proteção de dados dados

interface para acesso

operações

Encapsulamento





 Representa uma organização

lógica de dados e respectivas

operações

 Separa utilização e princípio do

implementação ocultamento

utilização: interface (visível) de

implementação: código de informações

descrição de dados e operações

pode ser compilado separadamente

(invisível)

Encapsulamento em Pascal: Unit



Unit TADLista;

interface

type

elemento = record

valor: string[15]; operações sobre o tipo

elo: ^elemento;

end;

lista = object

Procedure Transfere(PosOrigem, PosDestino: integer);

Procedure ImpLista;

Function Procura(Valor: string): integer; ........

Private

nodo: elemento;

end;

implementation representação do tipo

.... end.

Encapsulamento no modelo de objetos:

classe



 Classe é uma unidade de compilação

 Classes permitem separar interface da

implementação

Java: interface e classe podem ser compiladas

separadamente

C++: arquivos de protótipo (interface) e de

implementação podem ser compilados

separadamente

Encapsulamento, herança e polimorfismo

atributos de acesso a propriedades

herança de atributos

redefinição de propriedades herdadas

Proteção de Dados



 A coleção de dados somente é acessada pelas

operações definidas sobre o tipo no ambiente

encapsulado

 Exemplos de cápsulas:

Modelo procedural: unidades

Modelo de objetos: classes

 Níveis de proteção: o ambiente encapsulado

pode ‘exportar’ dados para outros ambientes

Exemplo: atributos de visibilidade (public, private,

protected)

 O ambiente encapsulado pode ´importar´dados

Exemplo: import Complex; uses Complex;

Proteção de Código



 Uma interface declara apenas o que o cliente

necessita saber para usar o TAD

Java: interface IComplex { public void lista(); }

C++: class Complex { public: void lista();}

 A implementação pode ser feita em uma unidade

separada

Java: class Complex implements IComplex {// implementa

lista)}

C++: Complex::lista(){ // implementa lista)}

 Cada operação (função/método) pode ser

associada a atributos de visibilidade (public, private,

protected)

Vantagens da proteção de dados e

operações



 Código do cliente do TAD não depende da

implementação

 A representação do tipo pode ser alterada sem

ser necessário notificar o cliente

 Segurança:

clientes não podem alterar a representação

clientes não podem tornar os dados inconsistentes





cliente

cliente

cliente usa TAD

Exemplo em Java: Coleções de Objetos









inserir

percorrer



procurar







Distintas representações

Operações similares

Estrutura de coleções em Java



 Base: interfaces com

operações genéricas

 Hierarquia com a raiz

Collection

 Implementações de List:

 ArrayList, LinkedList e Vector

 Implementações de Set:

 HashSet, TreeSet (SortedSet)

 Implementações de Map )

HashMap

TreeMap (SortedMap

Collection: operações básicas



A interface Collection contém os métodos

abstratos para as operações fundamentais

public interface Collection {

// Basic Operations

int size();

boolean isEmpty();

boolean contains(Object element);

boolean add(Object element); // Optional

boolean remove(Object element); // Optional

Iterator iterator();



// continua

Importante: Cada coleção implementa suas operações

Outras operações



A interface Collection também contém os métodos

abstratos para operações sobre o agrupamento



// Bulk Operations

boolean containsAll(Collection c);

boolean addAll(Collection c); // Optional

boolean removeAll(Collection c); // Optional

boolean retainAll(Collection c); // Optional

void clear(); // Optional



// Array Operations

Object[] toArray();

Object[] toArray(Object a[]);

}

Exemplo em Java: hashSet



Package java.util: implementa contêineres

genéricos, tais como:

Set, List, Map, SortedSet, SortedMap, HashSet,

TreeSet, Arrays, ArrayList, LinkedList, Vector

import java.util.*;

class TipoSet{

public static void main(String args[]){

String legumes[]={"alface","tomate","cebola"};

HashSet salada1=new HashSet();

for (int i=0;i
salada1.add(legumes[i]);

System.out.println(salada1); ...}

Exemplo C++: Container Class Library



Contém duas coleções de famílias de classes

parametrizadas:

ADT - Abstract Data Types : contém classes que

enfatizam as operações fundamentais de estruturas de

dados tais como: pilhas, filas, ‘deques’, ‘bags’, ‘sets’,

‘arrays’, dicionários

FDS - Fundamental Data Structures: contém

classes que enfatizam a forma de armazenamento de

estruturas de dados tais como: Listas, Listas duplamente

encadeadas, Vetores, Tabelas ‘hash’, Árvores binárias

TADS: Resumo



 Estendem o conjunto padrão de tipos

 Devem oferecer

representação do tipo

operações sobre o tipo

Questões de implementação

Como representar contêineres genéricos quanto a

tipo?

Como oferecer suporte às operações?

É possível sobrecarregar operadores?

É possível a interoperabilidade?

FIM


Related docs
Other docs by HC111211001944
Diapositive 1
Views: 1  |  Downloads: 0
nbs
Views: 7  |  Downloads: 0
EXPEDIENTES T�CNICOS UNITARIOS
Views: 0  |  Downloads: 0
Pr�sentation PowerPoint
Views: 2  |  Downloads: 0
Diapositiva 1
Views: 2  |  Downloads: 0
Banque de graticiels p�dagogiques
Views: 2  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!