Tipo Abstrato de Dados (TAD) Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo

Documentos relacionados
Algoritmos e Estruturas de Dados I PILHAS. Prof. Tiago Eugenio de Melo

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O

Algoritmos e Estruturas de Dados I. Hash Table - Python. Prof. Tiago Eugenio de Melo

Visibilidade e Encapsulamento

Programação Orientada a Objetos

Paradigmas de Linguagens de Programação. Tipos de Dados Abstratos

C com introdução a OO

Namespaces, Classes e Métodos.

Classes, Métodos e Propriedades

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Classes e Objetos. Sintaxe de classe em Java

Introdução ao Java. Prof. Herbert Rausch Fernandes

Programação Orienta a Objetos

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Linguagem de Programação III

Programação Estruturada Orientada a Objetos

Programação Orientada a Objetos. Conceitos Básicos

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo

Linguagem de Programação III

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

Linguagem de Programação II Implementação

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama]

Programação Orientada a Objetos em Python

Televisao tamanho tela emitirsom. conectarperifericos

Java para Desktop. Programação Orientada à Objetos 2 JSE

Herança Tiago Eugenio de Melo

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Informática. Professor: Diego Oliveira. Conteúdo 04: Orientação a Objetos

Computação II Orientação a Objetos

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Conceitos de Programação Orientada a Objetos

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

O que é um jogo digital?

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Programação Orientada a Objetos em Java

Fundamentos de Orientação à objetos

Orientação a Objetos parte 2 ENCAPSULAMENTO, CLASSES, HERANÇAS

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Programação procedimental

Introdução. Programação Orientada a Objetos (POO) João Paulo Q. dos Santos

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Aula 3. Encapsulamento e Funções de acesso

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Orientação a Objetos e UML

C O N S T R U T O R E S E S O B R E C A R G A P R O F. M E. H É L I O E S P E R I D I Ã O

TAD: Tipo Abstrato de Dados (parte 1)

LINGUAGEM DE PROGRAMAÇÃO

Computação II (MAB 225)

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados. Aula 1 Introdução a Banco de Dados

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Motivação. Estrutura de Dados. Motivação. Motivação. Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto de software

Tipos Abstratos de Dados TADs

Unidade: Introdução à POO (Programação Orientada a Objetos)

Introdução à Programação. Encapsulamento e Herança

Programação Orientada a Objetos

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Java Básico. Carga Horária: 32 horas. Pré-requisito: Lógica de Programação; JAVA. Conteúdo Programático

Linguagens de Programação Aula 12

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

Encapsulamento e Modularização

Requisitos de sistemas

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Encapsulamento e Modularização

Conceitos/princípios da orientação a objeto

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

Python para quem sabe Python

Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Introdução a classes e objetos. Copyright 2006 by Pearson Education

Modificadores de Acesso JAVA

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho

Lógica de Programação

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

Linguagem de Programação III

SCC-202 Algoritmos e Estruturas de Dados I. Profa. Graça Nunes 2º. Semestre 2010

Encapsulamento. Separa a interface de um objeto dos detalhes de seu funcionamento interno. Caixa preta 2/27

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

Produtividade e qualidade em Python através da metaprogramação

Laboratório de programação II

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

Módulo 5. Programação Orientada a Objetos. Programação Orientada a Objetos I Java (Rone Ilídio)

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

A figura abaixo representa uma classe denominada Carteira. Esta classe é composta dos métodos depositar(valor) e retirar(valor) e do atributo saldo.

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

PROGRAMAÇÃO ORIENTADA A OBJETOS

Tipos Abstratos de Dados

Aula 08 Encapsulamento. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Construtores e Especificadores de Acesso

Padrão para a codificação em Python

Encapsulamento. Alcides Pamplona

Capítulo 2. Orientação a Objetos

Introdução ao paradigma da orientação a objetos

Academia Java IP JAVA: Introdução à Programação em Java (30 horas)

Transcrição:

Tipo Abstrato de Dados (TAD) Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo tmelo@uea.edu.br www.tiagodemelo.info

Observações O conteúdo dessa aula é parcialmente proveniente do Capítulo 1 do livro Data Structures and Algorithms using Python. As palavras com a fonte Courier indicam uma palavra-reservada da linguagem de programação. 2

Introdução As linguagens de programação oferecem tipo de dados como uma parte integrante da linguagem. Estes tipos de dados são conhecidos como tipo primitivos de dados. Esses tipos podem ser: simples ou complexos. Inteiros e reais são tipos simples. Os tipos complexos são construídos de múltiplos tipos primitivos ou mesmo com outros tipos complexos. Em Python, objetos, strings, listas e dicionários são exemplos de tipos complexos. 3

Introdução (cont.) Muitas vezes, os tipos primitivos oferecidos pelas linguanges de programação não são suficientes para resolver problemas maiores ou mais complexos. Portanto, a maioria das linguagens de programação oferece recursos para que os programadores criem os seus próprios tipos de dados. 4

Abstração É um mecanismo para separar as propriedades de um objeto e restringir o foco para o que seja realmente relevante. 5

Abstração Exemplo de diversos níveis de abstração com aritmética de inteiros: 6

Tipo Abstrato de Dados (TAD) Ou Abstract Data Type (ADT). É um tipo de dados definido pelo programador que especifica um conjunto de valores de dados e uma coleção bem definida de operações que podem ser executadas nesses valores. TAD são definidos de maneira independente da sua implementação. A interação com um TAD é realizado através da sua interface ou pelo seu conjunto de funções. A consequência disso é o ocultamento de informação (information hiding). 7

Tipo Abstrato de Dados (cont.) Um TAD é como uma caixa-preta. 8

Tipo Abstrato de Dados (cont.) O conjunto de operações pode ser agrupado em quatro categorias: Construtores (Constructor): criam e inicializam novas instâncias do TAD. Acessores (Accessor): Retorna os dados contidos em uma instância sem modificá-la. Modificadores (Mutator): Modifica o conteúdo de uma instância de um TAD. Iteradores: Processa os dados individuais dos componentes. 9

Python Constructor Em Python, um construtor é um método especial usado para inicializar as instâncias de uma classe. Os construtores podem ser de dois tipos: Construtor parametrizado. Construtor não-parametrizado. O construtor é executado quando nós criamos o objeto de uma classe. Os construtores também verificam se existem os recursos necessários para que o objeto execute qualquer das suas tarefas. 10

Python Construtor O método init simula o construtor de uma classe. Esse método é chamado quando a classe é instanciada. Esse método é comumente usado para inicializar os atributos da classe. Toda classe deve ter um construtor, mesmo se ele simplesmente confiar no construtor padrão (default). 11

Python Construtor Exemplo: 12

Python Construtor Exemplo (saída): 13

Python Construtor Exemplo: contando o número de objetos de uma classe. 14

Python Construtor Exemplo (não-parametrizado) 15

Python Construtor Exemplo (parametrizado) 16

Python In-built class functions 17

Python In-built class functions 18

Python In-built class functions Saída (código anterior): 19

Python built-in class attributes 20

Python built-in class attributes 21

Python Accessor Um método accessor retorna a informação sobre o objeto, mas não muda o estado ou o objeto. Esse método normalmente é usado com a palavra get. 22

Python Mutator Um método mutator é uma função que modifica o variável interna de alguma maneira. A mais simples forma de um mutator é atribuir um novo valor para uma variável. Esse método normalmente é usado com a palavra set. 23

Python Accessor/Mutator 42 encapsulamento 4758 24

Python Accessor/Mutator encapsulamento? 25

Iterators Um iterator pode ser visualizado como um ponteiro para um container, isto é, uma estrutura do tipo lista que pode percorrer sobre todos os elementos deste container. Exemplo: cities = ["Paris","Berlin","Frankfurt"] for location in cities: print("location: " + location) 26

Tipo Abstrato de Dados (cont.) Existem algumas vantagens no uso de TADs: Foco na resolução do problema ao invés de ser preocupar com detalhes de implementação. Nós podemos reduzir de lógica que podem ocorrer ao se utilizar incorretamente das estruturas de armazenamento e os tipos de dados. A implementação do TAD pode ser modificada sem ter a necessidade de modificar o programa que utiliza o TAD. É mais fácil gerenciar e dividir programas grandes (reais) em módulos menores. 27

Referências https://www.javatpoint.com/python-constructors 28