Manual do Game Analysis Logic Verfier

Tamanho: px
Começar a partir da página:

Download "Manual do Game Analysis Logic Verfier"

Transcrição

1 Manual do Game Analysis Logic Verfier Davi Romero de Vasconcelos June 21, Introdução Game Analysis Logic Verfier (GALV) é um verificador de modelos para a lógica Game Analysis Logic (GAL). GALV foi desenvolvido como um framework em Java e pode ser encontrado no sítio As principais características do GALV são: 1- Permitir o uso de tipo de dados abstrato, por exemplo, uma lista pode ser utilizada para representar o histórico do jogo; 2- Permitir a utilização de diversas bibliotecas que estão disponíveis para a linguagem Java; 3- Utilizar funções e predicados para analisar um jogo, por exemplo, as funções de avaliações que são utilizadas pela comunidade de Inteligência Artificial (IA) para estimar o valor esperado de um jogo em um dado estado do jogo; 4- Permitir aspectos computacionais para definir as ações dos jogadores, por exemplo, o procedimento minimax, que é bastante utilizado na comunidade de IA, pode ser utilizado para definir as ações de um jogador, enquanto que os outros jogadores podem utilizar outros algoritmos. Note que a complexidade de gerar um jogo depende dos algoritmos usados para definir as ações dos jogadores. Como todo framework para definir um jogo é necessário estender algumas classes e implementar alguns métodos. A descrição geral das principais classes necessárias para que estão listados abaixo. A classe Sort define um sort. O método para criação de um objeto é definido a partir de um nome e da classe que o objeto é definido. Os seguinte tipos de dados primários já estão definidos em GAL: Sort- Boolean; SortChar; SortString; SortInteger; SortFloat; SortVector. Cada tipo primário já contém operações básicas sobre o sort. Por exemplo, o SortInteger já tem definido as funções soma, produto, subtração, etc, e os predicados menor, menor igual, maior igual, maior, entre outros. A classe Domain define o domínio de um dado sort. Os elementos do domínio podem ser adicionados através do método putvalue ou de forma implícita através da instanciação de uma constante do sort desta classe. A classe FunctionSymbol define a assinatura de uma função. Para criar um objeto desta classe basta definir o nome, os sorts de domínios e o 1

2 contra-domínio. Uma instância da subclasse ConstantSymbol é criada a partir apenas do nome e do sort de domínio. A classe Function define a interpretação para a uma dada função. Vale notar que diversas funções para um mesmo símbolo funcional podem ser utilizados em um jogo, ou seja, este é interpretado de forma não-rígida. É necessário implementar o método evaluate que recebe elementos do domínio e retorna um elemento do contra-domínio. A subclasse Constant é inicializada a partir do objeto símbolo constante e do valor que a constante designa. Novamente, um símbolo constante pode designar vários indivíduos em um jogo, ou seja, ser não-rígido. A classe PredicateSymbol define a assinatura de um predicado. Uma instância da subclasse PropositionSymbol é criada apenas a partir do nome da proposição. A classe Signature define a assinatura de um jogo, ou seja, os símbolos funcionais e predicativos. Para criar uma assinatura basta fornecer os símbolos funcionais e predicativos. É também possível criar uma assinatura com algumas funções ou predicados que serão rigidamente interpretados. A classe State define as interpretações a um dado momento do jogo. Um estado pode ser criado através das interpretações dos símbolos funcionais e predicativos, ou através de cópia de um estado já existente. A classe Player define o comportamento do jogador, ou seja, as ações que são tomadas por ele. O método actions deve ser estendida e retornar os próximos estados a partir de um dado estado. Contudo, lembre-se que mais de um jogador pode tomar uma decisão a cada estado, assim a composição de tais estados é determinada pela classe a Mediator. A classe Mediator define como se dá a composição dos estados resultante dos jogadores que devem atuar de forma conjunta em um estado. Esta classe define também os jogadores que devem tomar decisões nos próximos estados. As subclasses MediatorAsynchronous, MediatorAsynchronousConstantPlayers e MediatorAsynchronousTurnPlayers implementam a composição assíncrona, cujos jogadores devem tomar decisões nos próximos estados são definidos, respectivamente, como: ainda a ser definido (a classe deve ser estendida), são sempre os mesmos, ou alternam de acordo com a ordem definida pelo conjunto de jogadores. De forma semelhante a composição síncrona é definida pelas subclasses MediatorSynchronous, MediatorSynchronousConstantPlayers e MediatorSynchronousTurnPlayers. A classe Game deve estender os seguintes métodos: O método setsignature() define a linguagem não-lógica (assinatura) de GAL. 2

3 O método setplayers() define o conjunto de jogadores que participam do jogo. O método setinitialstates() define o conjunto de estados iniciais do jogo. O método setmediator() define como o mediador do jogo. Isto quer dizer, que é definido como os estados resultados das ações de cada jogador devem ser combinados. Assim como em validação de sistemas as principais formas de composição são as síncronas e as assíncronas. Existem diversas subclasses de jogos, onde o Mediator já está definido. Para inicializar o jogo deve-se chamar o método playing() que gera todos os estados do jogo. Os métodos playing(int nummoves) e playing(int nummoves, State s) geram os jogo até a profundidade nummoves e o jogo até o estado com profundidade nummoves a partir do estado s. 2 Jogo da Velha Nesta seção o jogo da velha será definido no GALV. Inicialmente, uma pequena descrição será apresentada abaixo. O primeiro passo para representar um jogo é definir a assinatura de um jogo. Apenas um sort (SortChar) será utilizado e o seu domínio é o conjunto b, x, o, onde b, x e o representam branco e as as peças dos jogadores, respectivamente. Para representar o tabuleiro do jogo da velha, os símbolos constantes conforme a tabela abaixo serão utilizados. Nenhum símbolo predicativo será utilizado. x 1 x 2 x 3 y 1 y 2 y 3 z 1 z 2 z 3 Para definir a assinatura, implementa-se o método setsignature() da classe Game como a seguir. public Signature setsignature() throws Exception SortChar pieces = new SortChar("pieces"); Sort[] sorts = new Sort[1]; sorts[0] = pieces; ConstantSymbol x1 = new ConstantSymbol("x1",pieces); ConstantSymbol x2 = new ConstantSymbol("x2",pieces); ConstantSymbol x3 = new ConstantSymbol("x3",pieces); ConstantSymbol y1 = new ConstantSymbol("y1",pieces); ConstantSymbol y2 = new ConstantSymbol("y2",pieces); ConstantSymbol y3 = new ConstantSymbol("y3",pieces); ConstantSymbol z1 = new ConstantSymbol("z1",pieces); 3

4 ConstantSymbol z2 = new ConstantSymbol("z2",pieces); ConstantSymbol z3 = new ConstantSymbol("z3",pieces); FunctionSymbol[] boardsymbols = new FunctionSymbol[9]; boardsymbols[0] = x1; boardsymbols[1] = x2; boardsymbols[2] = x3; boardsymbols[3] = y1; boardsymbols[4] = y2; boardsymbols[5] = y3; boardsymbols[6] = z1; boardsymbols[7] = z2; boardsymbols[8] = z3; return new Signature(sorts,boardSymbols,new PredicateSymbol[0]); O segundo passo é definir quais são os jogadores do jogo, implementando assim o método setplayers() da classe Game como a seguir. A classe PlayerTic- TacToe será definida a seguir. public Vector setplayers() throws Exception Vector players = new Vector(); Character b = new Character( b ); Character x = new Character( x ); Character o = new Character( o ); playerx = new PlayerTicTacToe("PlayerX", x, o, b,true); playero = new PlayerTicTacToe("PlayerO", o, x, b,false); players.add(playerx); players.add(playero); return players; O terceiro passo é definir os estados iniciais. Para definir um estado, é necessário interpretar todos os símbolos funcionais e predicativos. No caso do jogo da velha, interpretamos os símbolos constantes, que definem o tabuleiro, com o valor de branco (i.e. o tabuleiro está vazio). public Vector setinitialstates() throws Exception Constant[] board = new Constant[9]; board[0] = new Constant(x1,b); board[1] = new Constant(x2,b); board[2] = new Constant(x3,b); board[3] = new Constant(y1,b); board[4] = new Constant(y2,b); board[5] = new Constant(y3,b); board[6] = new Constant(z1,b); board[7] = new Constant(z2,b); board[8] = new Constant(z3,b); State s = new State(board,new Predicate[0]); Vector resultstates = new Vector(1); resultstates.add(s); return resultstates; 4

5 Para definir os jogadores, utiliza-se os métodos a seguir para determinar em um dado estado se um jogador ganhou (método winstate abaixo), se o jogo foi empate (método drawstate abaixo) e se o jogo terminou (método endgame abaixo). public static boolean winstate(state s, Character value) throws Exception Character x1 = (Character) s.getconstant("x1").evaluate(); Character x2 = (Character) s.getconstant("x2").evaluate(); Character x3 = (Character) s.getconstant("x3").evaluate(); Character y1 = (Character) s.getconstant("y1").evaluate(); Character y2 = (Character) s.getconstant("y2").evaluate(); Character y3 = (Character) s.getconstant("y3").evaluate(); Character z1 = (Character) s.getconstant("z1").evaluate(); Character z2 = (Character) s.getconstant("z2").evaluate(); Character z3 = (Character) s.getconstant("z3").evaluate(); if ( (x1.equals(value) && x2.equals(value) && x3.equals(value)) (y1.equals(value) && y2.equals(value) && y3.equals(value)) (z1.equals(value) && z2.equals(value) && z3.equals(value)) (x1.equals(value) && y1.equals(value) && z1.equals(value)) (x2.equals(value) && y2.equals(value) && z2.equals(value)) (x3.equals(value) && y3.equals(value) && z3.equals(value)) (x1.equals(value) && y2.equals(value) && z3.equals(value)) (x3.equals(value) && y2.equals(value) && z1.equals(value))) public static boolean drawstate(state s, Character value1, Character value2, Character value3) throws Exception Character x1 = (Character) s.getconstant("x1").evaluate(); Character x2 = (Character) s.getconstant("x2").evaluate(); Character x3 = (Character) s.getconstant("x3").evaluate(); Character y1 = (Character) s.getconstant("y1").evaluate(); Character y2 = (Character) s.getconstant("y2").evaluate(); Character y3 = (Character) s.getconstant("y3").evaluate(); Character z1 = (Character) s.getconstant("z1").evaluate(); Character z2 = (Character) s.getconstant("z2").evaluate(); Character z3 = (Character) s.getconstant("z3").evaluate(); if ( (!winstate(s, value1)) && (!winstate(s, value2)) && (!x1.equals(value3)) && (!x2.equals(value3)) && (!x3.equals(value3)) && (!y1.equals(value3)) && (!y2.equals(value3)) && (!y3.equals(value3)) && (!z1.equals(value3)) && (!z2.equals(value3)) && (!z3.equals(value3)) ) 5

6 public boolean endgame(state s) throws Exception return PlayerTicTacToe.endGame(s, splayer, sotherplayer, snull); public static boolean endgame(state s, Character value1, Character value2, Character value3) throws Exception if (winstate(s, value1) winstate(s, value2) drawstate(s, value1, value2, value3)) A definição de um jogador é basicamente implementar o método actions(state s) que recebe um estado e retorna os próximos estados. class PlayerTicTacToe extends Player implements Serializable protected Character splayer; protected Character sotherplayer; protected Character snull; public PlayerTicTacToe(String n, Character sp, Character so, Character sn, boolean b) super(n, b); splayer = sp; sotherplayer = so; snull = sn; public Vector actions(state s) throws Exception Vector result = new Vector(); FunctionSymbol[] boardsymbols= Game.game.getSignature().getNonRigidFunctionSymbols(); Constant c; for (int i = 0; i < boardsymbols.length; i++) c = (Constant) s.getfunction(boardsymbols[i]); if (c.evaluate().equals(snull) &&!endgame(s, splayer, sotherplayer, snull)) State saux = new State(s); saux.putfunction(new Constant(c.getConstantSymbol(), splayer)); result.add(saux); return (result); 6

7 2.1 Código completo A seguir o código completo do jogo da velha é apresentado. package manualexamples; import game.*; import java.util.vector; import java.io.*; import gal.*; class PlayerTicTacToe extends Player implements Serializable protected Character splayer; protected Character sotherplayer; protected Character snull; public PlayerTicTacToe(String n, Character sp, Character so, Character sn, boolean b) super(n, b); splayer = sp; sotherplayer = so; snull = sn; public static boolean winstate(state s, Character value) throws Exception Character x1 = (Character) s.getconstant("x1").evaluate(); Character x2 = (Character) s.getconstant("x2").evaluate(); Character x3 = (Character) s.getconstant("x3").evaluate(); Character y1 = (Character) s.getconstant("y1").evaluate(); Character y2 = (Character) s.getconstant("y2").evaluate(); Character y3 = (Character) s.getconstant("y3").evaluate(); Character z1 = (Character) s.getconstant("z1").evaluate(); Character z2 = (Character) s.getconstant("z2").evaluate(); Character z3 = (Character) s.getconstant("z3").evaluate(); if ( (x1.equals(value) && x2.equals(value) && x3.equals(value)) (y1.equals(value) && y2.equals(value) && y3.equals(value)) (z1.equals(value) && z2.equals(value) && z3.equals(value)) (x1.equals(value) && y1.equals(value) && z1.equals(value)) (x2.equals(value) && y2.equals(value) && z2.equals(value)) (x3.equals(value) && y3.equals(value) && z3.equals(value)) (x1.equals(value) && y2.equals(value) && z3.equals(value)) (x3.equals(value) && y2.equals(value) && z1.equals(value))) 7

8 public static boolean drawstate(state s, Character value1, Character value2, Character value3) throws Exception Character x1 = (Character) s.getconstant("x1").evaluate(); Character x2 = (Character) s.getconstant("x2").evaluate(); Character x3 = (Character) s.getconstant("x3").evaluate(); Character y1 = (Character) s.getconstant("y1").evaluate(); Character y2 = (Character) s.getconstant("y2").evaluate(); Character y3 = (Character) s.getconstant("y3").evaluate(); Character z1 = (Character) s.getconstant("z1").evaluate(); Character z2 = (Character) s.getconstant("z2").evaluate(); Character z3 = (Character) s.getconstant("z3").evaluate(); if ( (!winstate(s, value1)) && (!winstate(s, value2)) && (!x1.equals(value3)) && (!x2.equals(value3)) && (!x3.equals(value3)) && (!y1.equals(value3)) && (!y2.equals(value3)) && (!y3.equals(value3)) && (!z1.equals(value3)) && (!z2.equals(value3)) && (!z3.equals(value3)) ) public boolean endgame(state s) throws Exception return PlayerTicTacToe.endGame(s, splayer, sotherplayer, snull); public static boolean endgame(state s, Character value1, Character value2, Character value3) throws Exception if (winstate(s, value1) winstate(s, value2) drawstate(s, value1, value2, value3)) public Vector actions(state s) throws Exception Vector result = new Vector(); FunctionSymbol[] boardsymbols= Game.game.getSignature().getNonRigidFunctionSymbols(); Constant c; for (int i = 0; i < boardsymbols.length; i++) c = (Constant) s.getfunction(boardsymbols[i]); if (c.evaluate().equals(snull) &&!endgame(s, splayer, sotherplayer, snull)) State saux = new State(s); saux.putfunction(new Constant(c.getConstantSymbol(), splayer)); result.add(saux); 8

9 return (result); class Win extends GALProposition protected Character splayer; Win(Character sp) super(new PropositionSymbol("WIN"+sP)); splayer = sp; public boolean isvalid(state s) throws Exception return PlayerTicTacToe.winState(s,sPlayer); class Draw extends GALProposition protected Character splayer; protected Character sotherplayer; protected Character snull; Draw(Character sp,character sop,character sn) super(new PropositionSymbol("DRAW")); splayer = sp; sotherplayer = sop; snull = sn; public boolean isvalid(state s) throws Exception return PlayerTicTacToe.drawState(s,sPlayer,sOtherPlayer,sNull); public class TicTacToe extends GameAsynchronousTurnPlayers implements Serializable SortChar pieces; ConstantSymbol x1 ; ConstantSymbol x2 ; ConstantSymbol x3 ; ConstantSymbol y1 ; ConstantSymbol y2 ; ConstantSymbol y3 ; ConstantSymbol z1 ; ConstantSymbol z2 ; ConstantSymbol z3 ; PlayerTicTacToe playerx; PlayerTicTacToe playero; public static Character b = new Character( b ); public static Character x = new Character( x ); public static Character o = new Character( o ); 9

10 public TicTacToe() throws Exception super(); Win winx = new Win(x); Win wino = new Win(o); Draw draw = new Draw(x,o,b); basegalformulas.add(winx); basegalformulas.add(wino); basegalformulas.add(draw); basegalformulas.add(new EFMC(winX)); public Signature setsignature() throws Exception pieces = new SortChar("pieces"); Sort[] sorts = new Sort[1]; sorts[0] = pieces; x1 = new ConstantSymbol("x1",pieces); x2 = new ConstantSymbol("x2",pieces); x3 = new ConstantSymbol("x3",pieces); y1 = new ConstantSymbol("y1",pieces); y2 = new ConstantSymbol("y2",pieces); y3 = new ConstantSymbol("y3",pieces); z1 = new ConstantSymbol("z1",pieces); z2 = new ConstantSymbol("z2",pieces); z3 = new ConstantSymbol("z3",pieces); FunctionSymbol[] boardsymbols = new FunctionSymbol[9]; boardsymbols[0] = x1; boardsymbols[1] = x2; boardsymbols[2] = x3; boardsymbols[3] = y1; boardsymbols[4] = y2; boardsymbols[5] = y3; boardsymbols[6] = z1; boardsymbols[7] = z2; boardsymbols[8] = z3; return new Signature(sorts,boardSymbols,new PredicateSymbol[0]); public Vector setinitialstates() throws Exception Constant[] board = new Constant[9]; board[0] = new Constant(x1,b); board[1] = new Constant(x2,b); board[2] = new Constant(x3,b); board[3] = new Constant(y1,b); board[4] = new Constant(y2,b); board[5] = new Constant(y3,b); board[6] = new Constant(z1,b); board[7] = new Constant(z2,b); board[8] = new Constant(z3,b); State s = new State(board,new Predicate[0]); Vector resultstates = new Vector(1); resultstates.add(s); return resultstates; 10

11 public Vector setplayers() throws Exception Vector players = new Vector(); playerx = new PlayerTicTacToe("PlayerX", x, o, b,true); playero = new PlayerTicTacToe("PlayerO", o, x, b,false); players.add(playerx); players.add(playero); return players; 11

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando

Leia mais

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... } Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Alternativamente pode ser pensado como uma forma de maximizar o minimo ganho possível.

Alternativamente pode ser pensado como uma forma de maximizar o minimo ganho possível. Inteligência Artificial Algoritmo i com cortes Alfa-Beta Ana Saraiva 050509087 Ana Barbosa 050509089 Marco Cunha 050509048 Tiago Fernandes 050509081 FEUP - MIEIC 3ºAno/ºSemestre 1 Introdução O algoritmo

Leia mais

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

Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins Prova PMR00 o. semestre 0 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço.. ( pontos) Um heap binário é uma árvore binária completa (todos os níveis exceto o último

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 7 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

PMR Computação para Mecatrônica

PMR Computação para Mecatrônica PMR3201 - Computação para Mecatrônica Prof. Thiago de Castro Martins Prof. Newton Maruyama Prof. Marcos de S.G. Tsuzuki Monitor: Pietro Teruya Domingues Exercício Programa 2 - Versão 2017 Resolvendo o

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Interfaces Uma interface é uma forma abstrata de descrever um objeto A classe fixa a forma de um objeto

Leia mais

8 Experimentos. de pelo menos uma solução. 2 Na verdade, poderíamos definir uma função que retorna o conjunto de equilíbrios de

8 Experimentos. de pelo menos uma solução. 2 Na verdade, poderíamos definir uma função que retorna o conjunto de equilíbrios de 8 Experimentos Neste capítulo tratamos da utilização do verificador de modelos na prática, e realizamos algumas comparações entre outros algoritmos existentes. Os experimentos foram executados em uma máquina

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Editor Gráfico Vamos usar nosso framework do Motor, com pequenas mudanças (para permitir interação com

Leia mais

Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas

Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas Objetivo Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas Também chamado de Kit Resumo Parece semelhante ao padrão Factory Method,

Leia mais

9 Classes Abstractas e Interfaces

9 Classes Abstractas e Interfaces 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

Leia mais

Programação Orientada a Objetos Relacionamentos entre classes

Programação Orientada a Objetos Relacionamentos entre classes Programação Orientada a Objetos Relacionamentos entre classes Prof. Vicente Paulo de Camargo RELACIONAMENTO ENTRE CLASSES Interface agregação Dependencia composição generalização associação RELACIONAMENTO

Leia mais

Funções. Disciplina: Tópicos Especiais em TI PHP

Funções. Disciplina: Tópicos Especiais em TI PHP Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

Classe Abstrata e Interface

Classe Abstrata e Interface Orientação a objetos com Java Classe Abstrata e Interface Byron Leite byron.leite@gmail.com 1 Herança Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 7: Interfaces LEEC@IST Java 1/31 Interfaces revisão (1) Uma interface é um conjunto de protótipos de métodos (sem implementações) que especifica um serviço bem definido:

Leia mais

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu: Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz - 2015/05/13 Questão: 1 2 3 4 5 6 Total Pontos: 20 15 15 10 10 30 100 Gráu: 1. Defina os termos listados a seguir: (a) (10 Pontos)

Leia mais

Programação Orientada a Objetos Flávio de Oliveira Silva 144

Programação Orientada a Objetos Flávio de Oliveira Silva 144 HERANÇA Herança é a capacidade de uma subclasse de ter acesso as propriedades da superclasse(também chamada classe base) relacionada a esta subclasse. Dessa forma os atributos e métodos de uma classe são

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato

Leia mais

A Relação de Subtipo e Tipos Genéricos

A Relação de Subtipo e Tipos Genéricos O tipo List representa as listas que declaram ter elementos do tipo Object O tipo que representa as listas que declaram ter elementos de um tipo qualquer é List Este tipo é definido à custa

Leia mais

Palavras Reservadas da Linguagem Java

Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de

Leia mais

Inteligência Artificial. Resolução de problemas por meio de algoritmos de busca. Aula VI Busca Competitiva

Inteligência Artificial. Resolução de problemas por meio de algoritmos de busca. Aula VI Busca Competitiva Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação http://www.inf.unioeste.br/~claudia/ia2017.html Inteligência Artificial Resolução de problemas por meio de algoritmos

Leia mais

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes - Programação Java - Herança, Classes Abstratas e Interfaces - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa é transferido

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Interfaces Uma interface é uma forma abstrata de descrever um objeto A classe fixa a forma de um objeto

Leia mais

COMPORTAMENTOS - Observações

COMPORTAMENTOS - Observações COMPORTAMENTOS - Observações O próprio objeto realiza operações de consulta ou alteração dos valores dos seus atributos Essas operações são definidas em seus métodos Os métodos também são utilizados para

Leia mais

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. 6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável - O controlo da execução do programa

Leia mais

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; } Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos

Leia mais

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU Aula 10 POO 1 Classes Abstratas Profa. Elaine Faria UFU - 2019 Problema Método obterarea()? Classes Abstratas Classes que funcionam como um molde Declarada com comando abstract Contém um ou mais métodos

Leia mais

Prova de Recuperação PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins

Prova de Recuperação PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins Prova de Recuperação PMR21/PMR2 1o. semestre 2 Prof. Thiago Martins Instruções: screva o nome e o número USP na folha de papel almaço. 1. (2 pontos) Uma pilha é uma estrutura de dados na qual o elemento

Leia mais

Interfaces e Classes Abstratas

Interfaces e Classes Abstratas Interfaces e Classes Abstratas José Gustavo de Souza Paiva Problema Método obterarea()? Classes Abstratas Classes que funcionam como um molde Declarada com comando abstract Contém um ou mais métodos abstratos

Leia mais

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco 1 Expandindo o Sistema p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco class Diretor extends Funcionario { public boolean autentica(int senha)

Leia mais

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 6 Padrão State Exercício 1 Programa Capítulo 6 Padrão State Exercício Introdução Alguns

Leia mais

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){ UNIVERSIDADE FEDERAL DE SANTA CATARINA - Departamento de Automação e Sistemas PROGRAMAÇÃO DE SISTEMAS AUTOMATIZADOS - 2016/2 - P2 Nome: ------------------------------------------------------------------------------------------------------

Leia mais

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java Guia da Sintaxe do Java TIPOS PRIMITIVOS DE DADOS DO JAVA São os tipos nativos de dados do Java, que podem ser usados na declaração de atributos, variáveis, parâmetros. Tipo primitivo Tamanho Valor padrão

Leia mais

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos; Fundação CECIERJ - Vice Presidência de Educação Superior a Distância Curso de Tecnologia em Sistemas de Computação Disciplina: Programação Orientada a Objetos AP2 2 semestre de 2016. Nome Assinatura Observações:

Leia mais

Generics - Java. Fernando Santos. Programação Orientada a Objetos

Generics - Java. Fernando Santos. Programação Orientada a Objetos - Java Fernando Santos Programação Orientada a Objetos Generics é uma funcionalidade incorporada ao Java a partir da versão 5.0 Permite aos programadores escreverem métodos genéricos Os parâmetros dos

Leia mais

Programação Estruturada e Orientada a Objetos

Programação Estruturada e Orientada a Objetos INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais

Nome: Número: Primeira Parte (7 valores) Segunda Parte (3 valores)

Nome: Número: Primeira Parte (7 valores) Segunda Parte (3 valores) Nome: Número: Programação com Objectos 10 de Novembro de 2015, 08:00 (90 minutos) Primeira Parte (7 valores) Segunda Parte (3 valores) PERGUNTA NOTA PERGUNTA RESPOSTA 1.1 2.1 1.2 2.2 1.3 1.4 2.3 2.4 2.5

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-4 Construtores e Sobrecarga Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de dados nativos em Java

Leia mais

Modificadores de Acesso JAVA

Modificadores de Acesso JAVA Modificadores de Acesso JAVA Definição Os modificadores de acesso são padrões de visibilidade de acessos às classes, atributos e métodos. Esses modificadores são palavras-chave reservadas do Java. E as

Leia mais

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

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs Programação Orientada a Objetos Professor: André Luis Meneses Silva andreluis.ms@gmail.com br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância

Leia mais

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

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico Reuso de Software Aula 03 Tópicos da Aula POO e Padrões de Projetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com 12 Março 2012 Programação orientada a objetos Reuso de

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 5: Associações LEEC@IST Java 1/32 Associação revisão Uma associação representa uma referência entre objectos. Numa associação são definidos: Identificador termo descritivo

Leia mais

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

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Os códigos fornecidos na seção Códigos-fonte de apoio podem ser referenciados

Leia mais

Linguagem de Programação IV Introdução

Linguagem de Programação IV Introdução Linguagem de Programação IV Introdução Prof. Alessandro Borges 2 Tópicos Orientação a objetos Classe Objeto Abstração Encapsulamento Herança Polimorfismo Plataforma Java 3 4 POO é um paradigma de programação

Leia mais

Instituto de Informática Estrutura de Dados II

Instituto de Informática Estrutura de Dados II Instituto de Informática Estrutura de Dados II Revisão de Métodos em Classes Aplicada a Estrutura de Dados Básicas 20/08/2018 Profa. Lucília Gomes Ribeiro Prof. Dirson S Campos Programação em Java q O

Leia mais

Capítulo 9. Conclusão 184

Capítulo 9. Conclusão 184 9 Conclusão Esperamos com este trabalho ter demonstrado que a lógica Game Analysis Logic GAL, que é uma lógica modal de primeira-ordem baseada na lógica Computation Tree Logic, pode ser usada para representar

Leia mais

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla. Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa

Leia mais

Linguagem de programação Programação Orientada a objetos

Linguagem de programação Programação Orientada a objetos Instituto Federal de Minas Gerais Campus Ponte Nova Linguagem de programação Programação Orientada a objetos Professor: Saulo Henrique Cabral Silva Paradigma da orientação a objetos Paradigma = forma de

Leia mais

Notas de Aula 09: Tratamento de exceções

Notas de Aula 09: Tratamento de exceções Notas de Aula 09: Tratamento de exceções Objetivos da aula: Compreender o conceito de exceção Aprender a tratar exceções nos programas Entender a hierarquia das exceções Criar e lançar uma exceção proprietária

Leia mais

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

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções Implementação de Genéricos, Iteradores Isabel Harb Manssour Porto Alegre, maio de 2006 Roteiro Implementação de Genéricos Coleções Conceito de Genérico Implementação Iteradores Conceito Utilização ForEach

Leia mais

Linguagem Algorítmica OO. Linguagem Algorítmica

Linguagem Algorítmica OO. Linguagem Algorítmica UFSC-CTC-INE INE5384 - Estruturas de Dados Linguagem Algorítmica OO Prof. Ronaldo S. Mello 2002/2 Linguagem Algorítmica Independente de linguagem de programação OO Utilizada para: Exemplificar os algoritmos

Leia mais

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Introdução Além de utilizar as classes presentes na biblioteca padrão, programadores podem definir suas próprias

Leia mais

Paradigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20

Paradigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20 PPROG Paradigmas da Programação Tipos Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20 Sumário Interesse Definição Implementação Declaração Valor de um Tipo Enumerado Variável de Tipo Enumerado Métodos Automáticos

Leia mais

LEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10

LEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10 2/10 1.1. (1.5 val.) Os mecanismos de herança entre classes e de composição de objetos são, por vezes, apresentados como alternativos, face à disponibilização de funcionalidade a uma classe. Compare-os,

Leia mais

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos e Ligação Dinâmica Programação Orientada a Objetos e Polimorfismo A é a contribuição original do paradigma de programação orientado a objetos Fundamentos chave do paradigma OO: Abstração de Dados A herança

Leia mais

Interfaces POO. Prof. Marcio Delamaro

Interfaces POO. Prof. Marcio Delamaro Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso

Leia mais

Programação Orientada por Objectos 2007/2008

Programação Orientada por Objectos 2007/2008 Programação Orientada por Objectos 2007/2008 Segundo Teste, 30/6/2008, Duração 1h30 (20 valores) 1 [2v] Considere que pretende desenvolver uma função num jogo que trata uma colisão entre dois objectos

Leia mais

MsC. João Maria MsC. Liviane Melo

MsC. João Maria MsC. Liviane Melo Disciplina: Programação Orientada à Objetos AULA 02 Corpo docente: MsC. Alexandro Vladno Edmilson Campos MsC. Fábio Procópio Esp. Felipe Dantas MsC. João Maria MsC. Liviane Melo 2 Tipo Tamanho Alcance

Leia mais

Java First-Tier: Aplicações. Sobrecarga. Orientação a Objetos em Java (II) Sobrecarga de Construtores: Exemplo de Declaração

Java First-Tier: Aplicações. Sobrecarga. Orientação a Objetos em Java (II) Sobrecarga de Construtores: Exemplo de Declaração Java First-Tier: Aplicações Orientação a Objetos em Java (II) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Sobrecarga Um recurso usual em programação OO é o uso de sobrecarga

Leia mais

Implementação e Avaliação do Algoritmo MCTS-UCT para o jogo Chinese Checkers. Jhonny Moreira

Implementação e Avaliação do Algoritmo MCTS-UCT para o jogo Chinese Checkers. Jhonny Moreira Implementação e Avaliação do Algoritmo MCTS-UCT para o jogo Chinese Checkers Jhonny Moreira Introdução Introdução Na área da inteligência artificial (IA), a motivação é conseguir colocar os computadores

Leia mais

Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa

Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Conteúdo Noções elementares de extensão de classes Exemplo: classe

Leia mais

Dada a linguagem, números romanos, construir uma representação para a gramática dela junto com um interpretador para essa gramática.

Dada a linguagem, números romanos, construir uma representação para a gramática dela junto com um interpretador para essa gramática. Resumo Interpreter Amanda e Nikson Problema Dada uma linguagem, definir uma representação para a sua gramática e um interpretador que usa esta representação para interpretar sentenças da linguagem. Exemplo

Leia mais

Modelo do Mundo Real. Abstração. Interpretação

Modelo do Mundo Real. Abstração. Interpretação Modelo do Mundo Real Mundo Real Abstração Interpretação Sistema de Software Modelo Algoritmo Abstração: O modelo precisa capturar apenas as características do mundo real que são importantes para o sistema

Leia mais

Singleton. Como a maioria dos programadores organizaria o código para acessar informação de configuração? Eis um exemplo:

Singleton. Como a maioria dos programadores organizaria o código para acessar informação de configuração? Eis um exemplo: Introdução Como a maioria dos programadores organizaria o código para acessar informação de configuração? Eis um exemplo: public class Config { public static final String DEFAULT_READ_COMMUNITY_NAME =

Leia mais

Genéricos. Profa. Thienne Johnson EACH/USP

Genéricos. Profa. Thienne Johnson EACH/USP Genéricos Profa. Thienne Johnson EACH/USP Java, como programar, 6ª edição Deitel & Deitel Capítulo 18 Material complementar http://wps.prenhall.com/br_deitel_comoprogra_6/ Todas as classes em Java herdam,

Leia mais

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

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 DCC / ICEx / UFMG Padrões de Projeto Padrões de Projeto Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para

Leia mais

Programação I Aula 19 Aritmética com racionais Pedro Vasconcelos DCC/FCUP

Programação I Aula 19 Aritmética com racionais Pedro Vasconcelos DCC/FCUP Programação I Aula 19 Aritmética com racionais DCC/FCUP DCC/FCUP 2019 1/ 30 Nesta aula 1 Aritmética com racionais 2 Simplificação 3 Operações 4 Comparações DCC/FCUP 2019 2/ 30 Aritmética com racionais

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa

Leia mais

Jogos com Oponentes. Problemas de busca: não assumem a presença de um oponente

Jogos com Oponentes. Problemas de busca: não assumem a presença de um oponente istemas Inteligentes, 10-11 1 Jogos com ponentes Problemas de busca: não assumem a presença de um oponente Jogos: oponente INCERTEZA! Incerteza porque não se conhece as jogadas exatas do oponente e não

Leia mais

Herança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1

Herança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1 Herança Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman 1 1 1 Motivação Você está desenvolvendo um sistema de gerenciamento de pessoal para a USP Precisa fazer: Cadastro de alunos e professores

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse

Leia mais

Linguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista

Linguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista Linguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista == Laboratório 11 == 1. Escreva uma classe Carrinho para armazenar Itens

Leia mais

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Herança Aula de Hoje Problema Considere uma empresa que tenha tipos de empregados no aplicativo de folha de pagamento Um empregado tem nome,

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Breakout Componentes do Breakout Bola Raquete Tijolos Paredes Score Nem todos vão precisar de classes próprias

Leia mais

Herança Tiago Eugenio de Melo

Herança Tiago Eugenio de Melo Herança Tiago Eugenio de Melo tiago@comunidadesol.org Herança Conceito: Herança é a capacidade de especializar tipos de objetos (classes), de forma que os tipos especializados contenham, além de características

Leia mais

Conceitos de Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos Conceitos de Programação Orientada a Objetos Tatyana Bitencourt Com as técnicas de orientação a objeto, é possível obter resultados considerados impossíveis pensando de maneira estruturada. Como Java não

Leia mais

PROJETO DE DADOS PROJETO ARQUITETURAL BÁSICO. Projeto de Programas PPR0001

PROJETO DE DADOS PROJETO ARQUITETURAL BÁSICO. Projeto de Programas PPR0001 1 PROJETO DE DADOS PROJETO ARQUITETURAL BÁSICO Projeto de Programas PPR0001 2 Atividades Envolvidas Preliminar Realizar a organização dos dados considerando a tecnologia que será utilizada em módulos (exemplo:

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Editor Gráfico Vamos usar nosso framework do Motor, com pequenas mudanças (para permitir interação com

Leia mais

Jogos com Oponentes. Problemas de busca: não assumem a presença de um oponente

Jogos com Oponentes. Problemas de busca: não assumem a presença de um oponente Sistemas Inteligentes, 13-14 1 Jogos com ponentes Problemas de busca: não assumem a presença de um oponente Jogos: oponente INCERTEZA! Incerteza porque não se conhece as jogadas exatas do oponente e não

Leia mais

Programação Orientada a Objetos II Java Décima primeira aula

Programação Orientada a Objetos II Java Décima primeira aula Programação Orientada a Objetos II Java Décima primeira aula 1 Programação Orientada a Objeto II Classes Abstratas Interfaces 2 Métodos abstratos Métodos abstratos não possuem implementação (corpo) Para

Leia mais

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

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins Prova PMR0 o semestre 0 Prof Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço ( pontos) Uma árvore binária de busca é uma árvore binária na qual para qualquer sub-árvore

Leia mais

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga Algoritmos e Programação II Aula 3 Sobrecarga *Adaptado do material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, com nomes

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Múltiplos aliens Por enquanto todos os nossos aliens se parecem e se comportam do mesmo jeito, mas e se

Leia mais

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

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas

Leia mais

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos) Mecanismos de controlo de acesso Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a cada classe e cada membro da classe (dados e métodos) Modificadores de acesso: public protected private

Leia mais

Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert

Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert Há situações em que não deve haver instâncias de determinadas classes Há modelos incompletos que

Leia mais

Jogos com Oponentes. March 7, 2018

Jogos com Oponentes. March 7, 2018 Jogos com Oponentes March 7, 2018 Jogos com Oponentes ˆ Problemas de busca: não assumem a presença de um oponente ˆ Jogos: oponente INCERTEZA! ˆ Incerteza porque não se conhece as jogadas exatas do oponente

Leia mais