Bruce Eckel, Thinking in Patterns with Java, cf. José Valente de Oliveira 13-1

Documentos relacionados
Streams II. Overview. The notion of stream Java I/O stream hierarchy Files, and file access using streams Serialization

Tipos genéricos (cont)

Java Collections Framework III

Errors and exceptions

Java Collections Framework II

English version at the end of this document

English version at the end of this document

Programação com Objectos. Programação Centrada em Objectos. Home Page. Ano Lectivo 2008/2009 1º Semestre. Objectivos Programa Bibliografia Avaliação

Tipos abstratos de dados (TADs)

Herança e passagem de parâmetro AULA 09

Tipos genéricos (cont)

Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. José Valente de Oliveira 16-1

Módulo III Padrões GOF: Iterator

Desenho e documentação de arquitectura de software e de aplicações empresariais

Errors and exceptions

PROGRAMAÇÃO JAVA. Parte 3

Binding and Casting. Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf.

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Programação de Computadores II. Recursividade

MAC122 Princípios de Desenvolvimento de Algoritmos - BM,BMA

Módulo I Princípios e Padrões de Projeto de SW em Java

Arquitectura de Sistemas de Software

Introdução à Computação

Exemplos em Go e Python ALÉM DOS PARADIGMAS. Entenda as características da linguagem e saiba escolher e adaptar padrões de projeto

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

Pilha e Fila. Pilha em C. Definir o registro que representará cada elemento da pilha.

ProgamaçãoOrientada pelos Objetos B. Vectores

Paginador. Intenção. Motivação

Arquitectura de Sistemas de Software

GGI026 - Árvore rubro-negra - Remoção

ORIENTAÇÃO A OBJETOS

CIS 500 Software Foundations Fall September(continued) IS 500, 8 September(continued) 1

Prototype, um Design Patterns de Criação

2 Vectores de objectos

Módulo III Padrões GOF

Implementação de Planilha de Cálculos Simplificada

Padrões de Projeto WEB e o MVC

Lista Ligada. Nó de Lista Ligada

Análise e Projeto Orientados por Objetos

Arquitectura de Sistemas de Software

Provas de Matemática Elementar - EAD. Período

Profa. Thienne Johnson

Tópicos Avançados em Engenharia de Software

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Tabelas de Dispersão. Tabela de Dispersão

Padrão Comportamental: Paginador

Arquitectura de Sistemas de Software

AULA TEÓRICA 7 Tema 7. Colecções (cont.) Vector Ø Criação Ø Manipulação

Profa. Thienne Johnson

Estrutura de Dados Listas

Arquitectura de Sistemas de Software

Módulo III Padrões GOF: Bridge

Faculdade Campo Limpo Paulista Mestrado em Ciência da Computação Complexidade de Algoritmos Avaliação 2

Mas o que é mesmo Padrão de Projeto?

Programação Orientada a Objetos II JAVA Décima Aula. Prof. Rogério Albuquerque de Almeida

Busca binária. Busca em arquivos. Busca binária. Busca binária. Ordenação e busca em arquivos

Exame de Admissão. Instituto Nacional de Pesquisas Espaciais 18 de setembro de 2018 A: GABARITO

Orientação a Objetos AULA 09

PROGRAMAÇÃO E ALGORITMOS (LEII) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

Análise e Projeto. Padrões de Análise, Arquitetura e Projeto

3. Seja C o conjunto dos números complexos. Defina a soma em C por

Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação

Engenharia de Software

LÓGICA DE PROGRAMAÇÃO (JAVA) ESTRUTURAS REPETIÇÃO. Professor Carlos Muniz

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná

Análise e Projeto Orientados por Objetos

Problem 3: Sparse polynomials (Problem H in Mooshak POO 2015/2016)

Polimorfismo e Acoplamento Dinâmico

Design Patterns. Viviane Torres da Silva

Fontes Bibliográficas. Estruturas de Dados Aula 14: Recursão. Introdução. Introdução (cont.)

Iterator. Professor: Hyggo Almeida

Padrões de Desenho (Design Patterns)

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {

capta a noção elementar de ordemde chegada no processamento de tarefas, além da ordem de chegada é típico atender à prioridade

CÂMARA MUNICIPAL DE SANTO ANTÔNIO DA PLATINA - PR

CÂMARA MUNICIPAL DE SANTO ANTÔNIO DA PLATINA - PR. Planilha Controle de Estoque - Materiais de Limpeza ESTOQUE ANTERIOR

Course Review for Midterm Exam 1. Cpt S 223 Fall 2010

Padrões de Projeto. Prof. Jefersson Alex dos Santos

Fundamentos de Análise Matemática Profª Ana Paula. Sequência Infinitas

1. ORDENAÇÃO POR TROCA ORDENAÇÃO. 1.1 Ordenação por Bolha. Exemplo, 25, 57, 48, 37, 12, 92, 86, 33. Algoritmo. Complexidade de Tempo

Programação Orientada a Objetos. Padrões de Criação

*+,, -! / ! /,6 5. Virgilio Almeida, UFMG 2006

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins

ESTUDO DO PADRÃO DE PROJETO OBSERVER NO DESENVOLVIMENTO DE SOFTWARES UTILIZANDO A ARQUITETURA MVC RESUMO

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

Fundamentos de programação

Transcrição:

Nested Classes II Erich Gamma, Richard Helm, Ralph Johso, Joh Vlissides, Desig Patters Elemets of Reusable Object- Orieted Software, Addiso-Wesley, 1995, AKA GoF Bruce Eckel, Thikig i Patters with Java, cf. http://www.midview.et/books/tipatters/ jvo@ualg.pt José Valete de Oliveira 13-1 Overview What are ested classes? Why ad whe should we use ested classes? Nested classes q static member classes ad (static) member iterfaces q member classes (o-static ested classes or ier classes) q local classes q aoymous classes The Iterator desig patter q The iterator for-each jvo@ualg.pt José Valete de Oliveira 13-2 1

Example: A sigle liked list 3 8 1 jvo@ualg.pt José Valete de Oliveira 13-3 Exemplo 2: Listas simplesmete ligadas Termiologia iclui: - lista vazia, i.e., lista sem ós; - comprimeto, i.e., úmero de ós da lista ligada; - cabeça da lista, i.e., valor do item do primeiro ó; - cauda da lista, lista que se obtém elimiado o primeiro ó. jvo@ualg.pt José Valete de Oliveira 13-4 2

Listas simplesmete ligadas ou cadeias Algumas fuções elemetares sobre cadeias: - devolver a cabeça; - limpar a lista; - devolver a cauda, - duplicar a lista; - devolver o comprimeto; - cocatear 2 listas. - verificar se está vazia; - iserir um ovo ó; - remover um ó; - trocar a cauda de 2 listas jvo@ualg.pt José Valete de Oliveira 13-5 Exemplo 2: Listas simplesmete ligadas Iserção deovo óumacadeia de iteiros Remoção deum ó jvo@ualg.pt José Valete de Oliveira 13-6 3

Example 2: A liked list /** @versio 0.1 */ public class SLL<T> { private it sz; private Node<T> head; private static class Node<T> { T item; Node ext; Node (T t) { item = t; ext = ull; jvo@ualg.pt José Valete de Oliveira 13-7 Example 2: A liked list /** isert a ew ode with item o at the head of the list */ public void isert(t o) { Node<T> = ew Node<T>(o);.ext = head; head = ; sz++; jvo@ualg.pt José Valete de Oliveira 13-8 4

Example 2: A liked list public T head() { retur head.item; public T removehead(){ T tmp = head.item; head = head.ext; sz--; retur tmp; jvo@ualg.pt José Valete de Oliveira 13-9 Example 2: A liked list public Strig tostrig() { Strig r = ew Strig(); Node<T> tmp = head; while (tmp!= ull) { r += tmp.item.tostrig() + " "; tmp = tmp.ext; retur r; jvo@ualg.pt José Valete de Oliveira 13-10 5

Example 2: A liked list public class Mai { public static void mai(strig[] args) { SLL<Character> lst = ew SLL<Character>(); for(it i=0; i< 3; i++) lst.isert(character.fordigit(i,10)); System.out.pritl(lst); lst.removehead(); System.out.pritl(lst); System.out.pritl(lst.head()); jvo@ualg.pt 13-11 class SLL<T> { private it sz; private ILik<T> head; /** @versio 1.1 */ private iterface ILik<T> { // static by defiitio ILik<T> ext(); void setnext(ilik<t> l); T item(); // isert a ILik at the head private void isert(ilik<t> l) { l.setnext(head); head = l; sz++; public void isert(t o) { ILik<T> l = ew Likable<T>(o); isert(l); jvo@ualg.pt José Valete de Oliveira 13-12 6

private static class Likable<T> implemets ILik<T> { private T item; private ILik<T> ext; public Likable(T o) { item = o; ext = ull; public ILik<T> ext() { retur ext; public void setnext(ilik<t> l) { ext = l; public T item() { retur item; // // ed of class SLL<T> jvo@ualg.pt José Valete de Oliveira 13-13 Example 2: liked lists Cliet code public class SLLCliete { public static void mai(strig [] s) { SLL<Strig> lst = ew SLL<Strig>(); lst.isert( Aa ); lst.isert( Alice ); //... jvo@ualg.pt José Valete de Oliveira 13-14 7

Ier classes class OuterClass { class IerClass { // // jvo@ualg.pt José Valete de Oliveira 13-15 Local classes Like local variables local classes are defied iside a block, ad exist oly withi that block. A local class is a ier class, i.e., a local class is (also) a member of its outerclass A local class ca assess variables withi the scope of its outerclass The istaces of a local class are o diferet from the istaces ay other classe fial is the sole applicable qualifier jvo@ualg.pt José Valete de Oliveira 13-16 8

The liked list example, a iterator for public class SLLCliete { public static void mai(strig [] s) { SLL<Strig> lst = ew SLL<Strig>(); lst.isert( Aa ); lst.isert( Alice ); for(strig elemet: lst) System.out.pritl(elemet); //... >java SLLCliet <ret> Alice Aa > jvo@ualg.pt José Valete de Oliveira 13-17 Summary Nested classes q static member class (or static member iterfaces) q member classes (ier classes, or o-static ested classes) q local classes jvo@ualg.pt José Valete de Oliveira 13-18 9