UM MODELO ORIENTADO A OBJETOS PARA JOGOS EM COMPUTADOR

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

Download "UM MODELO ORIENTADO A OBJETOS PARA JOGOS EM COMPUTADOR"

Transcrição

1 UNIVERSIDADE FEDERAL FLUMINENSE UM MODELO ORIENTADO A OBJETOS PARA JOGOS EM COMPUTADOR POR LUIS VALENTE Monografia apresentada ao Departamento de Ciência da Computação da Universidade Federal Fluminense como parte dos requisitos para obtenção do Grau de Bacharel em Ciência da Computação Orientador: Prof. Luiz Carlos Castro Guedes D.Sc. PUC-RJ Departamento de Ciência da Computação Niterói, Agosto de 2002

2 UM MODELO ORIENTADO A OBJETOS PARA JOGOS EM COMPUTADOR LUIS VALENTE Monografia apresentada ao Departamento de Ciência da Computação da Universidade Federal Fluminense como parte dos requisitos para obtenção do Grau de Bacharel em Ciência da Computação Avaliada em Agosto de 2002 Banca Examinadora Prof. Luiz Carlos Castro Guedes D.Sc. PUC-RJ Prof ª. Aura Conci D.Sc. PUC-RJ Prof. Luiz Carlos Montez Monte D.Sc. COPPE-UFRJ Niterói, 2002

3 i Resumo Programação de Jogos é uma área da Ciência da Computação que abrange uma grande quantidade de conhecimento, como Computação Gráfica, Programação de dispositivos de entrada, Programação de hardware para som, Redes de Computadores, Inteligência Artificial, Engenharia de Software e Concorrência (threads). O desenvolvedor de jogos precisa conhecer (senão dominar) boa parte dessas áreas, além de utilizar tecnologias que estão em constante evolução. Este projeto propõe uma ferramenta, conhecida como Máquina de Jogos (engine), com propósito de abreviar o tempo de desenvolvimento ao oferecer recursos diversos de alto nível, que englobem algumas dessas tecnologias necessárias. A Máquina de Jogos, que aplica paradigmas como Orientação a Objetos e Gestão Automatizada de Recursos, é destinada ao desenvolvimento de aplicações para o Sistema Operacional Windows e emprega tecnologias como OpenGL e DirectX.

4 Lista de Figuras Figura 4.1: Diagrama de classes para um Estado...15 Figura 4.2: Associação entre Estado e Máquina de Estados...17 Figura 4.3: Oráculo e suas especializações...21 Figura 4.4: Diagrama de classes para manipulação de janelas...24 Figura 4.5: Diagrama de classes relacionadas à biblioteca COM...25 Figura 4.6: Diagrama de classes relacionadas a recursos do Sistema Gráfico...28 Figura 4.7: Diagrama de classes para uma câmera...29 Figura 4.8: Diagrama de classes para representação de uma textura...31 Figura 4.9: Diagrama de classes relacionadas a modelos tridimensionais...34 Figura 4.10: Diagrama de classes para uma entidade...38 Figura 4.11: Diagrama de classes para o Sistema de Dispositivos de Entrada...41 Figura 4.12: Classe para representação de efeitos sonoros...43 Figura 4.13: Diagrama de Relacionamentos para a Máquina de Estados...44 Figura 4.14: Diagrama de Relacionamentos para objetos móveis, modelos 3D e texturas...45 Figura 4.15: Aplicação em execução...46 Figura 5.1: Visualização da cena...54 Figura 5.2: Cena com todos os efeitos gráficos aplicados...55 ii

5 Índice 1. Introdução Desenvolvimento de Jogos Módulo Gráfico Módulo de Sons Módulo de Dispositivos de Entrada Módulo de Física Módulo de Inteligência Artificial Módulo de Conectividade Máquinas de Jogos Exemplos de Máquinas de Jogos T3DLib Ack-3D OGRE Fly3D Conclusões Vantagens Desvantagens Uma Máquina de Jogos Gestão Automatizada de Recursos Objetos Automáticos Exemplo Exemplo Máquina de Estados Fluxo de Execução de Jogos Definição de Estado Associação entre Estados e Máquina de Estados Funcionamento da Máquina de Estados Comunicação entre Estados e Ambiente Exterior Ferramentas Utilizadas Ferramentas Disponíveis Sistema Windows Criação de Janelas Biblioteca COM Sistema Gráfico Câmeras Texturas Modelos 3D Sistema de Entidades Sistema de Dispositivos de Entrada Sistema de Som Diagrama de Relacionamentos da Máquina de Jogos Exemplo State.h State.cpp Resultados Experimentais Métricas de Desempenho Ambiente de Execução Propriedades da Simulação Orientação da Cena Efeitos Especiais Cenário Câmeras Projéteis Jogador...56 iii

6 Inimigos Efeitos Sonoros Dados Experimentais Resultados Obtidos Implementação do Estado State.h State.cpp Conclusões Trabalhos Futuros Anexo A State.h State.cpp Cage.h InputHandler.h InputHandler.cpp ActionMap.h ActionMap.cpp Main.cpp Anexo B: Gestão Automatizada de Recursos Funcionalidades Existentes em Algumas Linguagens de Programação Java C Fundamentos Objetos Automáticos Construtores Destrutores Escopo Construtor + Destrutor + Escopo = Objeto Automático Regra Primeira de Aquisição Propriedade Sobre Recursos Estudo de Caso: Memória Transferência de Recurso Estudo de Caso: Contadores de Referências Conclusões Anexo C: Termos Relacionados Referências Bibliográficas iv

7 1 1. Introdução Este trabalho discute tópicos em Programação de Jogos e apresenta ferramentas para desenvolvimento de aplicações do gênero. Programação de Jogos é uma área da Ciência da Computação que abrange uma grande quantidade de conhecimento, como Computação Gráfica, Programação de dispositivos de entrada, Programação de hardware para som, Redes de Computadores, Inteligência Artificial, Engenharia de Software e Concorrência (threads). O desenvolvedor de jogos precisa conhecer essas áreas (entre outras) e as várias tecnologias utilizadas que são relacionadas a elas. As ferramentas implementadas aplicam paradigmas como Orientação de Objetos e Gestão Automatizada de Recursos para oferecer ao desenvolvedor interfaces de alto nível sobre algumas das tecnologias necessárias, de modo a abreviar o tempo de desenvolvimento. A Gestão Automatizada de Recursos tem como propósito minimizar erros de programação e aumentar a confiabilidade das aplicações. São empregadas tecnologias como OpenGL e DirectX, para o desenvolvimento de aplicações em Windows. No capítulo 2 deste trabalho, são relatados alguns problemas encontrados na área de Programação de Jogos para computadores. No capítulo 3, são descritos exemplos de Máquinas de Jogos e os problemas resolvidos por elas. No capítulo 4, é apresentada uma proposta de Máquina de Jogos. Os conceitos utilizados e a implementação são detalhados. No final do capítulo é descrito um exemplo simples de uso da Máquina de Jogos especificada. No capítulo 5, são relatados os resultados obtidos pela execução de uma aplicação demonstrativa que utiliza todos os serviços oferecidos pela Máquina de Jogos apresentada. A implementação do estado correspondente encontra-se no anexo A. O anexo B apresenta Gestão Automatizada de Recursos com mais detalhes, enquanto o anexo C descreve um glossário de termos relacionados ao projeto. As conclusões sobre o projeto são apresentadas no capítulo 6.

8 2 2. Desenvolvimento de Jogos Este capítulo discute alguns tópicos existentes em desenvolvimento de jogos, sob o ponto de vista do programador. Existem vários gêneros de jogos, ao mesmo tempo com alguns problemas comuns e outros bastante diferentes entre si. Segundo André LaMothe [ALA 1999], um jogo deve possuir alguns dos seguintes módulos: Gráficos (o que se vê), Sons (o que se ouve), Dispositivos de entrada (Input) (como interagir com o jogo), Física (interação entre os objetos do jogo e o ambiente aproximando o que ocorre no mundo real, conforme as Leis da Física) e Inteligência Artificial (IA) (como os objetos controlados pelo jogo se comportam). Pode ser acrescentado também o módulo de Conectividade (conexão em rede entre dois ou mais jogadores) Módulo Gráfico O desenvolvedor pode optar por utilizar gráficos em duas (2D) ou três dimensões (3D). Atualmente, devido à evolução do hardware de vídeo (para PC), é comum o uso de gráficos 3D. Os tipos de cenas representados estão diretamente ligados aos gêneros dos jogos. Qualquer que seja o gênero do jogo, é possível classificá-los em duas categorias: Primeira Pessoa: São jogos em que o ponto de vista utilizado é o do usuário. Os ambientes caracterizados são totalmente tridimensionais, contribuindo para a imersão do usuário no cenário; Terceira Pessoa: O usuário acompanha a ação à distância. Jogos deste tipo podem fazer uso de gráficos 2D ou 3D. Os gêneros de jogos, podem se enquadrar em uma das classificações ou em ambas ao mesmo tempo, podem ser divididos nas seguintes categorias, segundo [ALA 1999] e [BSA 1996]: Tiro em primeira pessoa: Estilo popularmente conhecido como First Person Shooter (FPS), simula cenas tridimensionais em grandes ambientes internos (ou labirintos), geralmente. Como o próprio nome sugere, o ponto de vista utilizado é o de primeira pessoa, para gerar uma sensação de imersão no ambiente. Exemplos: Quake, Unreal; Esportes: Utilizam gráficos 2D ou 3D e podem oferecer vários pontos de vista. O cenário limita-se àquele onde é praticada a modalidade (uma quadra, por exemplo). As animações podem ser avançadas para acomodar os possíveis movimentos de um atleta. Exemplos: FIFA Soccer, NBA Live; Luta: Ambientam-se em um cenário restrito ao local da luta. No caso de jogos 2D, a ação é visualizada lateralmente. Caso sejam usados gráficos 3D, podem ser oferecidos vários pontos de vista. Podem ser utilizadas animações ou modelos tridimensionais para representar os personagens. Exemplos: Mortal Kombat, Street Fighter, Tekken; Side Scroller: Tradicionalmente são utilizados gráficos 2D, com visão lateral. Possuem um grande cenário que é visualizado por partes. O usuário controla um objeto que percorre este cenário, por rolamento (scrolling). É possível, entretanto, utilizar gráficos 3D para representar o cenário e ao mesmo tempo manter as características do gênero. Exemplos: Super Mario Bros, Sonic The Hedgehog; Arcade: Utilizam gráficos 2D. Correspondem aos primeiros jogos existentes, em que a ação é visualizada lateralmente ou por cima. O cenário é fixo, não possuindo rolamento (scrolling). Exemplos: Pac-Man, Asteroids; Simulação mecânica: Abrange simulações de corrida, vôo, et cetera. Utilizam gráficos 3D, com visão em primeira ou terceira pessoa. Exemplos: Microsoft Flight Simulator, The Need for Speed;

9 3 Estratégia/RPG 1 /Guerra: Utilizam gráficos 2D ou 3D. Os cenários geralmente possuem grande extensão, podendo representar ambientes externos ou internos. O ponto de vista pode ser localizado bem acima do local onde estão os objetos, de modo que o usuário possa ter uma ampla visão da área focalizada. O usuário participa de simulação como um espectador que tem o poder de interferir na simulação, ou seja, ele não controla um objeto especificamente. Exemplos: Diablo, Final Fantasy, SimCity, The Sims; Quebra-cabeças/Tabuleiro/Cartas: Geralmente são os estilos de jogos mais simples e usam gráficos 2D. Entretanto, podem utilizar gráficos 3D para criar alguns efeitos gráficos, mas a essência do gênero é mantida. Exemplos: Tetris, Blockout, Monopoly, Solitaire; Shooter: Correspondem aos jogos em que o usuário controla algum tipo de aeronave e percorre um cenário por rolamento (scrolling). A visão é em terceira pessoa e a direção do rolamento do cenário pode ser horizontal, vertical ou diagonal (isométrica), em 2D ou 3D. Exemplos: Galaga, Zaxxon Módulo de Sons Sons são utilizados em jogos para dois fins: Efeitos sonoros; Música. Efeito sonoro é definido como um som de curta duração, que é reproduzido em resposta a algum evento. Música pode ser definida como uma longa melodia de fundo. Para representar efeitos sonoros, podem ser utilizados arquivos de som que definem um formato de onda. Um dos formatos mais populares é aquele utilizado em sistemas Windows, cujo arquivo possui extensão.wav [WLR 1995]. Para representar músicas, podem ser utilizados arquivos MIDI, trilhas de CD ou outros formatos de áudio como MP3. É interessante observar que arquivos de formato de onda também poderia ser utilizados para representar sons, mas isto não acontece na prática porque estes arquivos ocupam muito espaço em disco e memória. Os arquivos de tipo MIDI [WLR 1995] são utilizados para produzir música sintetizada, pois eles contêm apenas uma descrição do som (como uma partitura) que é enviada para que um sintetizador efetivamente o reproduza. De acordo com o Fraunhofer IIS [MP3 2001], MP3 é um formato de áudio que utiliza uma alta taxa de compressão, ao mesmo tempo mantendo uma qualidade comparável a existente em trilhas de CD. Desta forma, o uso deste formato de arquivo para músicas de fundo é viável. A única desvantagem é que o arquivo tem que ser descomprimido em tempo real, e isto pode gerar problemas de desempenho para a aplicação Módulo de Dispositivos de Entrada Computadores pessoais possuem pelo menos dois tipos de dispositivos padrões: um teclado e um mouse. Jogos para computador podem, entretando, fazer uso de outros dispositivos como controles de jogo (joysticks). Um controle de jogo pode ser definido como qualquer dispositivo que não seja teclado nem mouse [ALA 1999]. A escolha de qual dispositivo é utilizado é dividida entre o desenvolvedor e o usuário. Alguns jogos podem requerer que algum tipo específico de dispositivo esteja disponível para tornar a simulação mais realista ou simplesmente porque o determinado tipo de dispositivo é mais adequado à situação. Por exemplo, simuladores de vôo podem utilizar manches e jogos de corrida podem utilizar 1 Role Playing Games

10 4 volantes e pedais. Existem, ainda, dispositivos que são capazes de reagir a certos eventos. Estes dispositivos são conhecidos como dispositivos force-feedback. Eles possuem motores em seu interior que são capazes de produzir forças como resistência ou puxões, conforme forem programados Módulo de Física Neste módulo são feitos todos os cálculos para a simulação de Física da interação entre os objetos do jogo e o ambiente onde eles são posicionados. É comum a utilização da Física Newtoniana para modelar o comportamento de todas estas entidades. A complexidade dos cálculos depende do quão próximo da realidade se quer que o jogo esteja. Algumas aplicações para Física em jogos: Simulação de gravidade; Simulação de movimento de objetos, atrito, amortecimento, et cetera; Sistemas de partículas (simulação de fogo, fumaça, explosões, et cetera); Detecção e resposta a colisões Módulo de Inteligência Artificial A função da IA é produzir um comportamento para os objetos controlados pela aplicação de modo que seja convincente ao usuário e que torne o jogo interessante. Como exemplificado em [ALA 1999] e [BSA 1996], IA pode ser utilizada em jogos para alguns destes fins: Oponentes inteligentes: Objetos que representam algum desafio ao jogador, ou seja, o usuário precisa derrotá-los de alguma maneira para prosseguir no jogo; Objetos inteligentes não controlados pelo jogador: Objetos que cooperam com o jogador ou que apenas estão presentes no mesmo ambiente deste, alheios à ação (mas com vida própria); Ambientes ou sistemas inteligentes: Ambientes que reagem a eventos executados pelo jogador ou conjunto de objetos que se comunicam entre si para executar algum tipo de estratégia. Entre algumas técnicas de IA existentes que podem ser aplicadas, podem ser citadas: Algoritmos determinísticos (comportamentos pré-determinados ou pré-programados); Aplicação de padrões (comportamentos determinados por uma série de padrões, que podem ser implementados através de roteiros ou scripts); Planejamento e árvores de decisão; Redes neurais; Lógica Fuzzy; Algoritmos genéticos; Aprendizado e memória; Cálculo de rotas (Path-finding); Sistemas Especialistas.

11 Módulo de Conectividade Segundo Ben Sawyer [BSA 1996], uma sessão de jogo em que dois ou mais jogadores estão conectados remotamente pode ser classificada em uma das seguintes categorias: Conexão modem a modem : Duas pessoas com duas máquinas diferentes conectam-se diretamente uma à outra com uso de modems ; Conexão em rede local (LAN): Duas ou mais pessoas utilizam uma rede local para compartilhar uma sessão de jogo. É utilizado algum protocolo de rede como IPX ou NetBios; Conexão a servidor remoto: Nesta configuração, existe um servidor e vários programas clientes. O servidor tem a função de receber os dados dos clientes e repassá-los aos outros. Geralmente, estas sessões de jogos ocorrem através da Internet, utilizando-se o protocolo TCP/IP. Web Games: Correspondem a jogos que são executados através de um programa navegador pra Internet (web browser). Podem ser implementados em Java (applets) ou com tecnologias tais como Macromedia Flash e Macromedia Shockwave.

12 6 3. Máquinas de Jogos Máquinas de jogos (engines) são coleções de uma ou mais bibliotecas de software que oferecem serviços e/ou entidades de alto nível (abstrações), com o objetivo de automatizar o máximo possível de tarefas para que o desenvolvedor possa se concentrar no conteúdo ou lógica da aplicação. Uma questão pertinente: o que deve ser automatizado? Um jogo é uma aplicação que utiliza alguns módulos bem definidos (Gráficos, Sons, Dispositivos de entrada, Física, Inteligência Artificial ou Conectividade). Uma Máquina de Jogos deve implementar alguns desses módulos e oferecê-los como um serviço para o desenvolvedor. Os estilos de jogos determinam quais módulos são necessários e o quão complexos eles são. Sendo assim, o grau de especialização de uma engine depende do comprometimento com um estilo ou estilos para os quais ela foi escrita (se for o caso). As engines podem também prover certas ferramentas para a manipulação de suas abstrações. Por exemplo, uma engine poderia propor um modelo para as cenas que ela exibe (ex: um mapa). Nesse caso, ela poderia oferecer uma ferramenta de construção de cenas, de forma que o usuário possa lidar com estas abstrações sem se preocupar com a sua real implementação Exemplos de Máquinas de Jogos A seguir são apresentados alguns exemplos de Máquinas de Jogos, para ajudar na compreensão de suas aplicações T3DLib Desenvolvida por André LaMothe [ALA 1999], é uma engine simples, escrita com C++ sobre DirectX, usada para o desenvolvimento de aplicações para sistemas Windows. Ela provê finas camadas de abstração (conhecidas como wrappers) para os módulos Gráfico, Física, Dispositivos de Entrada e Som. Esta engine é destinada para jogos 2D. Podem-se destacar os seguintes itens: Ack-3D Possibilita o uso de arquivos Bitmap do Windows (BMP); Implementação de sprites, chamados de BOBs (Blitter objects) pela engine. Estes objetos podem ter uma ou mais sequências de animações. Os quadros (frames) das animações são organizados em um arquivo do tipo Bitmap, e as sequências de animações são simplesmente índices sequenciais para os quadros. São oferecidos algoritmos para detecção de colisão entre BOBs; Contém uma biblioteca para lidar com linhas e polígonos em 2D. Existem operações básicas sobre polígonos (translação, rotação, escala) e para desenho (sólido ou wireframe); Leitura de dados do teclado, mouse e joystick, através do DirectInput; Reprodução e leitura de arquivos de som do tipo formato de onda do Windows (arquivos que possuem normalmente extensão.wav) e músicas MIDI. Esta engine foi desenvolvida por Larry Myers [LLM 1995] para jogos 3D do tipo POV (Point of view) em mente. Neste tipo de simulação, o cenário é desenhado utilizando-se técnicas de ray casting, e o resultado final é que o usuário visualiza as cenas em primeira pessoa. (Exemplo de jogos do gêneros: Doom e Wolfenstein 3D). Embora esta engine tenha 3D no nome, comumente ela não seria classificada como tal [JDG 1996]. O uso da técnica de ray casting resulta em cenas que simulam 3D a partir de princípios

13 7 2D, e não 3D real. Por esta razão, engines que usam essa implementação são ditas 2.5D por não serem totalmente 3D. Existem implementações para DOS (C) e Windows (C++). Sua funcionalidade permite o uso dos módulos Gráfico, Física e Dispositivos de Entrada. Entre os serviços oferecidos, pode-se destacar: OGRE Implementação de algoritmos para ray casting exclusivamente por software (não é utilizada aceleração por hardware, até porque na época de desenvolvimento da engine esses recursos ainda não estavam disponíveis); Utilização de arquivos Bitmap (PCX, BBM 2 e LBM 3 ); Movimentação do ponto de vista (câmera) e detecção de colisão com o ambiente; Renderização ou construção de cenas a partir de um ponto de vista. Estas cenas (que podem conter paredes, portas e outros objetos definidos pelo desenvolvedor), são representadas por arquivos de mapas. Elas podem ser desenhadas com sombreamento e texturas; Leitura de dados do teclado e mouse 4 ; Implementação de objetos (sprites) estáticos e dinâmicos com animação (chamadas de object sequences na engine) e detecção de colisão; Editor de mapas. OGRE (acrônimo para Object Oriented Graphics Rendering Engine) é uma engine orientada a cenas desenvolvida em C++ sob o modelo open source, desenvolvida por OGRE Team [OGR 2002]. Uma das premissas no desenvolvimento de OGRE é a qualidade do código e projeto. Para os desenvolvedores desta engine, a API oferecida ao usuário deve ser a mais simples e intuitiva possível, deixando otimizações e truques para quando forem realmente necessários. Conceitos encontrados em sistemas comerciais (design patterns, análise e projeto com UML, uso de outras bibliotecas de software para agilizar o desenvolvimento) são amplamente utilizados. Sua implementação faz uso de técnicas de programação orientadas a objeto (encapsulamento, overloading, herança, et cetera). O projeto da engine não foi desenvolvido para um tipo específico de aplicação; sua interface genérica pode ser extendida dinamicamente através do uso de plugins (dlls). Esses plugins implementam gerentes de cena (scene managers) que se comunicam com o cerne da engine, que não precisa ser modificado. OGRE possui apenas o módulo Gráfico. Esta engine oferece os seguintes serviços (entre outros): Interface orientada a objetos construída com independência de API 3D (i.e. poderiam ser usados Direct3D, OpenGL, et cetera). Existem implementações para Windows e Linux; Importação de modelos do 3D Studio (possui também arquivo de descrição de modelos com formato próprio); Uso de diversos tipos de arquivos de imagem (TGA, PNG e JPEG) para texturas, com geração automática de mipmaps. Alguns efeitos sobre texturas (environment mapping, multitexturing em um ou mais passos, entre outros) podem ser aplicados; Implementação de objetos móveis (chamados de entidades). Não oferece detecção de colisão entre estes objetos; 2 Formato usado pelo programa Deluxe Paint II. [LLM 1995] 3 Formato usado pelo programa Deluxe Paint II. [LLM 1995] 4 Na versão para DOS, são implementados algoritmos para lidar com esses dispositivos diretamente por hardware. Já a versão para Windows, usa as ferramentas padrões já disponíveis para programas Windows. Não é possível utilizar joysticks em nenhuma versão.

14 Fly3D Tipos diversos de luzes (spot lights, point lights); Sistemas de partículas (particle systems), inclusive com definição por scripts de texto; Billboarding para representar sprites; Definição dos materiais dos objetos através de scripts de texto; Framework (i.e. template) para novos programas clientes. Fly3D 5 é uma engine desenvolvida em C++, orientada a plugins desenvolvida por Paralelo Computação [FLY 2002]. Os plugins têm papel fundamental na concepção da engine, pois qualquer extensão se faz a partir deles. Uma extensão da engine podem ser classes utilitárias, um frontend ou até uma nova aplicação. O objetivo disso é prover uma interface generalizada e deixar as especializações a cargo dos plugins, ao mesmo tempo evitando-se recompilar todo o cerne da engine quando se quiser adicionar uma nova funcionalidade. A parte central da engine (chamada de backend) é formada por quatro módulos: DirectX, renderização, matemática e a engine propriamente dita. O módulo de renderização guarda toda a configuração da parte gráfica, cuida de estruturas de dados afins e oferece comandos de alto nível (desenhar texto na tela, alterar modo de vídeo, et cetera) que lidam com a API 3D nativa, que é OpenGL. O módulo de matemática oferece várias classes que representam entidades matemáticas como vetores, matrizes e quaternions, que são usadas ao longo do processamento na engine. O módulo DirectX oferece leitura de dados de dispositivos de entrada (teclado e mouse), carregamento, gestão e reprodução de arquivos de som (Windows.wav) e conectividade. O módulo da engine propriamente dita é aquele que integra os outros três e que supervisiona a comunicação entre eles e os plugins. Fly3D também provê várias ferramentas adicionais (que são os frontends), como editores de cenas, servidores para jogos em rede, extensões para o uso na Web (ActiveX), entre outras. Fly3D oferece soluções para os módulos Gráfico, Dispositivos de Entrada, Som, Física, Redes e Inteligência Artificial. Podem-se ainda destacar algumas características desta engine : Utiliza árvores BSP como estrutura principal no processamento de cenas; Possui uma série de formatos de arquivo próprios, usados para armazenar estruturas como árvores BSP, lightmaps, geometria para objetos estáticos ou animados, entre outros. Para trabalhar com esses tipos de arquivos, são oferecidas ferramentas (frontends) e plugins para programas de modelagem 3D; Possui vários plugins que oferecem uma série de objetos ou entidades de alto nível e efeitos especiais. Como exemplos, encontram-se nesse pacote sistemas de partículas, explosões, projéteis, câmeras, objetos controlados pela IA (chamados de robôs pela engine), abstração para jogador (chamado de pessoa ), entre vários outros; Leitura de dados do teclado e mouse, através do DirectInput; Implementação de detecção e tratamento de colisão entre objetos e o ambiente; Possui algoritmos de baixo nível para implementação de Inteligência Artificial; Implementa jogos em rede em um esquema cliente/servidor; Todas as aplicações criadas com a engine são executadas através de um frontend especial. Esse frontend possui algumas opções para alterar o comportamento da renderização e para carregar e visualizar arquivos de cenas. 5

15 Conclusões Os exemplos apresentados são apenas uma pequena amostra da grande quantidade de engines encontradas hoje em dia (basta fazer uma busca na Web para encontrar vários outros exemplos). Podem-se encontrar engines das mais variadas complexidades, desde algumas que apenas encapsulam alguma API nativa ou partes desta (DirectX, por exemplo), quanto àquelas que provêm soluções altamentes especializadas como renderização de terrenos com níveis de detalhe variados, implementação de Inteligência Artificial através de roteiros (scripts) e outros problemas avançados. Entre os exemplos citados, pode-se observar uma variedade de tecnologias. Na parte gráfica, as mais recentes utilizam aceleração por hardware, através de APIs como Direct3D, DirectDraw e OpenGL. A aceleração por hardware em placas de vídeo é comum hoje em dia, seja para 2D ou 3D. O resultado disso é que os desenvolvedores podem acessar as funções disponíveis em hardware anexo e aproveitar o processador central para implementar outras tarefas. Na parte de som e dispositivos de entrada, a implementação é a mínima necessária para que esses módulos funcionem, não existindo maiores abstrações. Finalmente, o próprio conceito de engine pode ser confundido com o conceito de biblioteca de software, mas as diferenças são sutis. Uma máquina de jogos que não apresente um comprometimento com um determinado estilo de jogo poderia ser confundida com uma biblioteca porque ela apenas oferece ferramentas para o programa (i.e. a aplicação), ou seja, o programa usa os serviços da máquina mas esta não possui uma autonomia (i.e. a máquina em si é apenas um conjunto de serviços e objetos que são acessíveis a um programa). Por outro lado, uma máquina altamente especializada poderia ser configurada através de parâmetros (um programa que executasse essa máquina, roteiros ou scripts, et cetera) para que um novo jogo pudesse ser produzido. Isso quer dizer que a máquina funcionaria como um molde (ou template), com uma certa automonia (ou seja, a máquina aceitaria parâmetros e funcionaria por si própria). Embora existam engines tão diferentes entre si, pode-se citar algumas vantagens e desvantagens em relação ao uso: Vantagens Uma engine com alto nível de especialização pode proporcionar uma plataforma de desenvolvimento rápido de aplicações, sendo necessário apenas alterar os parâmetros de funcionamento. O desenvolvedor não precisa se preocupar em criar/testar código para lidar com problemas de nível mais baixo, porque isto já foi feito antes. O código pode ser reutilizado em vários projetos diferentes. O reuso em vários projetos diferentes proporciona oportunidades para novos testes, o que contribui para a robustez da engine. O desenvolvedor (cliente) não necessariamente precisa ter todo o conhecimento necessário para implementar (ou entender a implementação) da engine. Esta pode apresentar uma interface de nível mais alto de modo que se possa utilizá-la sem se preocupar com detalhes irrelevantes para a aplicação em desenvolvimento. Além do mais, se a engine for projetada com orientação a objetos em mente, ela pode apresentar uma interface comum para um determinado tipo de tarefa e deixar as especializações definirem a implementação. Nesse caso, o desenvolvedor (cliente) será beneficiado porque o tempo de aprendizado para usar a engine será menor (porque usa uma interface comum para realizar várias tarefas). Pode proporcionar independência de API e sistema operacional. A engine poderia ser desenvolvida utilizando objetos ou entidades de nível de abstração mais alto (ex: efeito sonoro, polígono, sistema gráfico, gerente de cenas, et cetera). Desta forma, a engine poderia ter a implementação modificada, se assim fosse necessário, e as aplicações clientes não sofreriam alterações significativas. Pelo mesmo motivo, o uso da aplicação em sistemas operacionais diferentes é facilitado.

16 10 Economizam-se recursos (tempo, dinheiro) ao pular etapas de desenvolvimento Desvantagens Nenhuma engine resolve todos os problemas. Nesse caso, o desenvolvedor tem duas escolhas: usar outra engine ou tentar extender a atual para adequá-la ao seu caso. Engines desenvolvidas para um único tipo de jogo possuem uma estrutura rígida e sua flexibilidade é pequena; isto é uma desvantagem se o desenvolvedor trabalha com vários estilos de jogos. Por outro lado, pode ser uma vantagem significativa se o desenvolvedor só se preocupa com o estilo em questão, pois a implementação da engine pode ser bastante otimizada (e/ou mais completa) ao assumir que somente um estilo de jogo será usado. A questão aqui é o confronto entre flexibilidade e otimização. Engines não são muito diferentes de outros sistemas de software. Com o tempo, novos recursos podem ser adicionados, aumentando a complexidade geral. Sem estratégias de desenvolvimento e manutenção adequadas, a engine pode passar de solução a problema.

17 11 4. Uma Máquina de Jogos Neste capítulo é apresentada uma máquina de jogos (Glib) com os seguintes objetivos: Prover uma funcionalidade mínima para a criação de jogos e programas de demonstração multimídia; Facilidade de uso; Criação de camadas de alto nível sobre as APIs nativas, com a finalidade de automatizar tarefas repetitivas (como por exemplo, inicialização de sistemas) e agilizar o desenvolvimento dos aplicativos; Gestão automatizada de recursos. Esta máquina de jogos é implementada em C++ e utiliza tecnologias como OpenGL e DirectX para realizar as suas tarefas. É destinada para o desenvolvimento de aplicações em ambiente Windows Gestão Automatizada de Recursos Um recurso pode ser definido como algo que deve ser requisitado ao Sistema Operacional, quando necessário, e que deve ser devolvido a este após o uso. Esta definição é abstrata o bastante para englobar exemplos como memória, arquivos, sockets, et cetera. O principal problema em relação a recursos é que o programador deve explicitamente devolvêlos ao Sistema Operacional quando não são mais necessários. Quando isto não é feito, uma série de problemas podem se manifestar, como perda de recursos (resource leaks), deadlocks, bugs aleatórios (um defeito que é difícil de se reproduzir), acessos inválidos à memória, exaustão do Sistema Operacional (i.e. os recursos do Sistema Operacional estão esgotados), entre outros, dependendo do tipo do recurso. Linguagens de programação 6 como C++ não possuem funcionalidade padrão para tratar do problema. Entretanto, a gestão de recursos pode ser automatizada utilizando-se a estrutura nativa desta linguagem Objetos Automáticos Toda classe em C++ possui duas funções especiais: um construtor e um destrutor. O construtor é chamado quando o objeto é criado, e o destrutor é chamado quando o objeto sai do escopo onde ele foi definido, sempre. Desta forma, é possível encapsular recursos utilizando-se classes. Uma instância da classe passa a ser proprietária do recurso (porque passa a ser responsável por sua devolução); este é alocado no construtor e devolvido ao Sistema Operacional através do destrutor. É importante notar que todos os recursos encapsulados dessa forma são automaticamente devolvidos ao Sistema Operacional, se acontecer algum desses casos: Um objeto declarado em um bloco de código (uma função, por exemplo) será criado (i.e. terá o seu construtor executado) quando o fluxo de programa entrar no escopo do bloco. Quando o fluxo de programa deixar o bloco 7, o objeto será destruído (i.e. terá o seu destrutor executado); 6 Linguagens como Java fornecem coletores de lixo para gestão automática de memória. A coleta de memória não utilizada é feita periodicamente pela Máquina Virtual Java, processo que em determinadas circunstâncias pode ocorrer somente ao término da aplicação [BEC 2000]. 7 Saída normal (break, goto, return) ou por exceção (throw).

18 12 Um objeto A é declarado como campo de um outro objeto B. Nesse caso, o objeto A será construído quando o objeto B for contruído. Da mesma forma, o destrutor de A será executado pelo destrutor de B, quando este for destruído. Em ambos os casos, o escopo de uso do objeto é bem definido, e por isso o compilador pode automatizar todo o processo 8. Existe, porém, o caso em que o recurso é alocado dinamicamente (ex: memória). O escopo de uso deste recurso não é bem definido, e a linguagem não cuida da devolução deste ao Sistema Operacional de maneira automática. A solução para o problema é utilizar um objeto que tenha um escopo bem definido para encapsular o recurso. Este objeto passará a ser o proprietário do recurso encapsulado. Essa cadeia de objetos que encapsulam recursos ou outros objetos acaba no programa principal, que é o nível mais alto. Estas idéias, acrescidas da noção de propriedade sobre recursos, formam a base para o paradigma de Gestão de Recursos (Resource Management), apresentado por Bartosz Milewsky [BMI 2001]. Este paradigma define uma única regra, chamada Regra Primeira de Aquisição (First Rule of Acquisition), que diz: Obtenha recursos em construtores e devolva-os usando os destrutores correspondentes. Como exemplos ilustrativos, podem-se citar a alocação de memória e sincronização entre threads através de semáforos Exemplo 1 A STL 9 oferece uma classe utilitária para cuidar de memória alocada dinamicamente, chamada auto_ptr. Uma instância desta classe, ao ser criada, recebe o ponteiro para a memória obtida do sistema. Quando a instância é destruída, ela devolve a memória ao Sistema Operacional, automaticamente : int main (int argc, char* argv[]) std::auto_ptr <int> p (new int); return 0; No exemplo acima, o objeto auto_ptr passa a ser proprietário do recurso obtido e irá devolvê-lo ao Sistema Operacional quando o programa se encerrar Exemplo 2 Sincronização entre threads em Windows é feita utilizando-se regiões críticas ou exclusivas (Critical Sections). Para informar ao Sistema Operacional que vai entrar em uma região exclusiva, uma thread deve chamar a função EnterCriticalSection() 10, e para sair, ela deve chamar LeaveCriticalSection() 11. O problema é que a saída da thread da região exclusiva (para que outras threads possam utilizá-la) não é garantida, porque deve-se chamar explicitamente uma função para que isto aconteça. Uma solução simples para esse problema é fornecida a seguir: 8 A exceção que pode desqualificar a regra é o uso das funções exit() e abort(), que provocam término abrupto do programa. Quando essas funções são usadas, destrutores de objetos locais não são executados. 9 Standard Template Library. 10 API do Windows. 11 API do Windows.

19 13 class CriticalSection friend class Lock; private: CRITICAL_SECTION _criticalsection; void Enter () ::EnterCriticalSection (&_criticalsection); void Leave () ::LeaveCriticalSection (&_criticalsection); public: CriticalSection () ::InitializeCriticalSection (&_criticalsection); ~CriticalSection () ::DeleteCriticalSection (&_criticalsection); ; A classe CriticalSection apenas encapsula a estrutura de dados usada pela API do Windows. Esta classe, por si só, não garante que todo objeto que entrar em uma região exclusiva saia dela automaticamente. Por isso, seus métodos são acessíveis apenas a uma classe em especial e invisíveis para todas as outras. Esta classe privilegiada (Lock) será a proprietária do recurso estado da região exclusiva, e irá garantir que todo cliente que entrar em uma região exclusiva irá deixá-la automaticamente: class Lock ; private: CriticalSection & _zone; public: Lock (CriticalSection & criticalsection) : _zone (criticalsection) _zone.enter(); ~Lock () _zone.leave(); Um exemplo de uso de ambas:

20 14 class Shared private: CriticalSection _criticalsection; ; public: void Update () Lock guard (_criticalsection); // todo o processamento aqui É possível observar que clientes que entrarem na região exclusiva sairão dela no término de execução da função. Mais detalhes sobre a metodologia de Gestão de Recursos (como noções de transferência de propriedade) podem ser encontrados em [BMI 2001] Máquina de Estados O modelo proposto de Máquina de Jogos utiliza uma Máquina de Estados que possui os seguintes objetivos: Prover uma estrutura autônoma para todas as aplicações. Estrutura autônoma aqui significa que a Máquina funcionará com o uso de parâmetros, e que ela não terá que sofrer modificações para que uma novo programa seja feito; Isolar partes da aplicação que são comuns e implementá-las como parte da Máquina. Entre estas partes comuns, encontram-se tarefas como configurar sistemas diversos (Sistema Gráfico, por exemplo). Com isso, o desenvolvedor ganhará tempo ao pular estas etapas Fluxo de Execução de Jogos Um fluxo de execução típico de um jogo, segue a seguinte ordem [ALA 1999]: 1. Inicialização da Aplicação 12 ; 2. Ciclo Principal; 3. Finalização da Aplicação 13. O Ciclo Principal divide-se em: A) Leitura de dados dos dispositivos de entrada; 12 Inicialização de estruturas de dados, obtenção de recursos do Sistema Operacional, et cetera. 13 Devolução de recursos usados ao Sistema Operacional, restauração de variáveis anteriores dos subsistemas (como modo de vídeo, por exemplo), et cetera.

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

ESTUDO DE CASO WINDOWS VISTA

ESTUDO DE CASO WINDOWS VISTA ESTUDO DE CASO WINDOWS VISTA História Os sistemas operacionais da Microsoft para PCs desktop e portáteis e para servidores podem ser divididos em 3 famílias: MS-DOS Windows baseado em MS-DOS Windows baseado

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

Um Driver NDIS Para Interceptação de Datagramas IP

Um Driver NDIS Para Interceptação de Datagramas IP Um Driver NDIS Para Interceptação de Datagramas IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furb.br Resumo. Este artigo apresenta o desenvolvimento de um driver NDIS 1 para

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

Planejando o aplicativo

Planejando o aplicativo Um aplicativo do Visual FoxPro geralmente inclui um ou mais bancos de dados, um programa principal que configura o ambiente de sistema do aplicativo, além de uma interface com os usuários composta por

Leia mais

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido Arquitetura Roteiro Arquitetura Tipos de Arquitetura Centralizado Descentralizado Hibrido Questionário 2 Arquitetura Figura 1: Planta baixa de uma casa 3 Arquitetura Engenharia de Software A arquitetura

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 02 Análise e Projeto OO Edirlei Soares de Lima Análise A análise modela o problema e consiste das atividades necessárias para entender

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação. ANEXO 11 O MATRIZ Para o desenvolvimento de sites, objeto deste edital, a empresa contratada obrigatoriamente utilizará o framework MATRIZ desenvolvido pela PROCERGS e disponibilizado no início do trabalho.

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

IW10. Rev.: 02. Especificações Técnicas

IW10. Rev.: 02. Especificações Técnicas IW10 Rev.: 02 Especificações Técnicas Sumário 1. INTRODUÇÃO... 1 2. COMPOSIÇÃO DO IW10... 2 2.1 Placa Principal... 2 2.2 Módulos de Sensores... 5 3. APLICAÇÕES... 6 3.1 Monitoramento Local... 7 3.2 Monitoramento

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

Trabalho GA - Editor de Cenário Parallax

Trabalho GA - Editor de Cenário Parallax Objetivo A tarefa consiste em criar um editor gráfico de cenários para jogos 2D com visão lateral. O editor deve permitir que o usuário trabalhe com camadas, para simular o efeito parallax. O usuário pode

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

Leia mais

Modelagemde Software Orientadaa Objetos com UML

Modelagemde Software Orientadaa Objetos com UML Modelagemde Software Orientadaa Objetos com UML André Maués Brabo Pereira Departamento de Engenharia Civil Universidade Federal Fluminense Colaborando para a disciplina CIV 2802 Sistemas Gráficos para

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

Manual do Usuário Android Neocontrol

Manual do Usuário Android Neocontrol Manual do Usuário Android Neocontrol Sumário 1.Licença e Direitos Autorais...3 2.Sobre o produto...4 3. Instalando, Atualizando e executando o Android Neocontrol em seu aparelho...5 3.1. Instalando o aplicativo...5

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

Leia mais

Sistemas de Informação I

Sistemas de Informação I + Sistemas de Informação I Dimensões de análise dos SI Ricardo de Sousa Britto rbritto@ufpi.edu.br + Introdução n Os sistemas de informação são combinações das formas de trabalho, informações, pessoas

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma: 1 Introdução A utilização de frameworks como base para a construção de aplicativos tem sido adotada pelos desenvolvedores com três objetivos básicos. Primeiramente para adotar um padrão de projeto que

Leia mais

Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes

Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes 3 MÁQUINAS VIRTUAIS Em nossa aula anterior, fizemos uma breve introdução com uso de máquinas virtuais para emularmos um computador novo

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS) Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS) Definição Geral: Disciplina de Compiladores Prof. Jorge Bidarra (UNIOESTE) A especificação de requisitos tem como objetivo

Leia mais

MANUAL DE INSTALAÇÃO 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS ; 3) SUMÁRIOS GENEPLUS.

MANUAL DE INSTALAÇÃO 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS ; 3) SUMÁRIOS GENEPLUS. PROGRAMA EMBRAPA DE MELHORAMENTO DE GADO DE CORTE MANUAL DE INSTALAÇÃO 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS ; 3) SUMÁRIOS GENEPLUS. MANUAL DE INSTALAÇÃO: 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

7.Conclusão e Trabalhos Futuros

7.Conclusão e Trabalhos Futuros 7.Conclusão e Trabalhos Futuros 158 7.Conclusão e Trabalhos Futuros 7.1 Conclusões Finais Neste trabalho, foram apresentados novos métodos para aceleração, otimização e gerenciamento do processo de renderização

Leia mais

Considerações no Projeto de Sistemas Cliente/Servidor

Considerações no Projeto de Sistemas Cliente/Servidor Cliente/Servidor Desenvolvimento de Sistemas Graça Bressan Graça Bressan/LARC 2000 1 Desenvolvimento de Sistemas Cliente/Servidor As metodologias clássicas, tradicional ou orientada a objeto, são aplicáveis

Leia mais

Introdução à Linguagem Java

Introdução à Linguagem Java Introdução à Linguagem Java Histórico: Início da década de 90. Pequeno grupo de projetos da Sun Microsystems, denominado Green. Criar uma nova geração de computadores portáveis, capazes de se comunicar

Leia mais

INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 4. INTERLIGAÇÃO DO SISTEMA... 5 5. ALGUNS RECURSOS... 6 6. SERVIDOR BAM...

INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 4. INTERLIGAÇÃO DO SISTEMA... 5 5. ALGUNS RECURSOS... 6 6. SERVIDOR BAM... 1 de 30 INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 3.1. ONDE SE DEVE INSTALAR O SERVIDOR BAM?... 4 3.2. ONDE SE DEVE INSTALAR O PROGRAMADOR REMOTO BAM?... 4 3.3. COMO FAZER

Leia mais

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

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses

Leia mais

PROJETO INFORMÁTICA NA ESCOLA

PROJETO INFORMÁTICA NA ESCOLA EE Odilon Leite Ferraz PROJETO INFORMÁTICA NA ESCOLA AULA 1 APRESENTAÇÃO E INICIAÇÃO COM WINDOWS VISTA APRESENTAÇÃO E INICIAÇÃO COM WINDOWS VISTA Apresentação dos Estagiários Apresentação do Programa Acessa

Leia mais

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo

Leia mais

Tabela de roteamento

Tabela de roteamento Existem duas atividades que são básicas a um roteador. São elas: A determinação das melhores rotas Determinar a melhor rota é definir por qual enlace uma determinada mensagem deve ser enviada para chegar

Leia mais

Figura 1 - Arquitetura multi-camadas do SIE

Figura 1 - Arquitetura multi-camadas do SIE Um estudo sobre os aspectos de desenvolvimento e distribuição do SIE Fernando Pires Barbosa¹, Equipe Técnica do SIE¹ ¹Centro de Processamento de Dados, Universidade Federal de Santa Maria fernando.barbosa@cpd.ufsm.br

Leia mais

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador Sistemas de Informação Prof. Anderson D. Moura Um programa de computador é composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual. Em um

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

Procedimentos para Reinstalação do Sisloc

Procedimentos para Reinstalação do Sisloc Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...

Leia mais

1. Apresentação. 1.1. Objetivos

1. Apresentação. 1.1. Objetivos 1.1. Objetivos 1. Apresentação Neste capítulo estão descritos os objetivos gerais do livro, os requisitos desejáveis do estudante para que possa utilizá-lo eficientemente, e os recursos necessários em

Leia mais

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Tiago Peres Souza 1, Jaime Willian Dias 1,2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil tiagop_ti@hotmail.com 2 Universidade

Leia mais

SIMULADO Windows 7 Parte V

SIMULADO Windows 7 Parte V SIMULADO Windows 7 Parte V 1. O espaço reservado para a Lixeira do Windows pode ser aumentado ou diminuído clicando: a) Duplamente no ícone lixeira e selecionando Editar propriedades b) Duplamente no ícone

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart.

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart. Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart. Versão 1.6 15/08/2013 Visão Resumida Data Criação 15/08/2013 Versão Documento 1.6 Projeto Responsáveis

Leia mais

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007 ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007 CURITIBA 2015 2 SUMÁRIO INTRODUÇÃO AO MICROSOFT POWERPOINT 2007... 3 JANELA PRINCIPAL... 3 1 - BOTÃO OFFICE... 4 2 - FERRAMENTAS DE ACESSO

Leia mais

Microsoft Office PowerPoint 2007

Microsoft Office PowerPoint 2007 INTRODUÇÃO AO MICROSOFT POWERPOINT 2007 O Microsoft Office PowerPoint 2007 é um programa destinado à criação de apresentação através de Slides. A apresentação é um conjunto de Sides que são exibidos em

Leia mais

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos

Leia mais

ARQUITETURA DE SISTEMAS. Cleviton Monteiro (cleviton@gmail.com)

ARQUITETURA DE SISTEMAS. Cleviton Monteiro (cleviton@gmail.com) ARQUITETURA DE SISTEMAS Cleviton Monteiro (cleviton@gmail.com) Roteiro Definição Documento de arquitetura Modelos de representação da arquitetura Estilos arquiteturais Arquitetura de sistemas web Arquitetura

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes Introdução Hardware X Software Corpo Humano Parte Física Componentes 18 Capacidade de utilizar o corpo em atividades especificas explorando seus componentes Hardware Introdução Parte física: placas, periféricos,

Leia mais

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. 1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. Editando um Artigo 4.3. Excluindo um Artigo 4.4. Publicar

Leia mais

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Perola André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Prevayler é a implementação em Java do conceito de Prevalência. É um framework que prega uma JVM invulnerável

Leia mais

TRBOnet MDC Console. Manual de Operação

TRBOnet MDC Console. Manual de Operação TRBOnet MDC Console Manual de Operação Versão 1.8 ÍNDICE NEOCOM Ltd 1. VISÃO GERAL DA CONSOLE...3 2. TELA DE RÁDIO...4 2.1 COMANDOS AVANÇADOS...5 2.2 BARRA DE FERRAMENTAS...5 3. TELA DE LOCALIZAÇÃO GPS...6

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

Desvendando Jogos 2D. Por Marcos Romero Setembro / 2008. Cyborg Arena - RHGames

Desvendando Jogos 2D. Por Marcos Romero Setembro / 2008. Cyborg Arena - RHGames Desvendando Jogos 2D Por Marcos Romero Setembro / 2008 Cyborg Arena - RHGames Jogos Casuais Paciência Windows XP Paciência deve ser o jogo mais usado no PC. O mercado de jogos casuais tem um grande potencial,

Leia mais

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT. Power Point. Básico

Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT. Power Point. Básico Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT Power Point Básico Santa Maria, julho de 2006 O Power Point é um aplicativo do Microsoft Office direcionado à criação de apresentações.

Leia mais

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas Operacionais Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente,

Leia mais

Análises Geração RI (representação intermediária) Código Intermediário

Análises Geração RI (representação intermediária) Código Intermediário Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O

Leia mais

Voltado para novos usuários, este capítulo fornece uma instrução para edição de Leiaute do SILAS e suas funções.

Voltado para novos usuários, este capítulo fornece uma instrução para edição de Leiaute do SILAS e suas funções. 13. Editor de leiautes Voltado para novos usuários, este capítulo fornece uma instrução para edição de Leiaute do SILAS e suas funções. Neste capítulo uma breve explicação será apresentada sobre a organização

Leia mais

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 2-1. PRINCÍPIOS DE SOFTWARE DE ENTRADA E SAÍDA (E/S) As metas gerais do software de entrada e saída é organizar o software como uma série de camadas, com as mais baixas preocupadas em esconder as

Leia mais

Palavras-chave: i3geo, gvsig, Mapserver, integração, plugin. Contato: edmar.moretti@terra.com.br ou edmar.moretti@gmail.com

Palavras-chave: i3geo, gvsig, Mapserver, integração, plugin. Contato: edmar.moretti@terra.com.br ou edmar.moretti@gmail.com III Jornada Latinoamericana e do Caribe do gvsig Artigo: Integração do software i3geo com o gvsig Autor: Edmar Moretti Resumo: O i3geo é um software para a criação de mapas interativos para internet qu

Leia mais

Informática. Informática. Valdir

Informática. Informática. Valdir Informática Informática Valdir Questão 21 A opção de alterar as configurações e aparência do Windows, inclusive a cor da área de trabalho e das janelas, instalação e configuração de hardware, software

Leia mais

Orientação a Objetos

Orientação a Objetos Orientação a Objetos 1. Sobrecarga (Overloading) Os clientes dos bancos costumam consultar periodicamente informações relativas às suas contas. Geralmente, essas informações são obtidas através de extratos.

Leia mais

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES [Observação: O template a seguir é utilizado como roteiro para projeto de sistemas orientado

Leia mais

atube Catcher versão 3.8 Manual de instalação do software atube Catcher

atube Catcher versão 3.8 Manual de instalação do software atube Catcher atube Catcher versão 3.8 Manual de instalação do software atube Catcher Desenvolvido por: Clarice Mello, Denis Marques Campos Dezembro de 2014 Sumario 1. Objetivo deste manual...3 2. Requisitos para instalação...3

Leia mais

Engenharia de Sistemas Computacionais

Engenharia de Sistemas Computacionais Engenharia de Sistemas Detalhes no planejamento UNIVERSIDADE FEDERAL DE ALAGOAS Curso de Ciência da Computação Engenharia de Software I Prof. Rômulo Nunes de Oliveira Introdução Na aplicação de um sistema

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

OpenGL. Uma Abordagem Prática e Objetiva. Marcelo Cohen Isabel Harb Manssour. Novatec Editora

OpenGL. Uma Abordagem Prática e Objetiva. Marcelo Cohen Isabel Harb Manssour. Novatec Editora OpenGL Uma Abordagem Prática e Objetiva Marcelo Cohen Isabel Harb Manssour Novatec Editora Capítulo 1 Introdução A Computação Gráfica é uma área da Ciência da Computação que se dedica ao estudo e ao desenvolvimento

Leia mais

Google Drive. Passos. Configurando o Google Drive

Google Drive. Passos. Configurando o Google Drive Google Drive um sistema de armazenagem de arquivos ligado à sua conta Google e acessível via Internet, desta forma você pode acessar seus arquivos a partir de qualquer dispositivo que tenha acesso à Internet.

Leia mais

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS Manual de Instalação Tempro Software StavTISS Sumário 1. INTRODUÇÃO... 2 2. REQUISITOS DO SISTEMA... 3 3. INSTALAÇÃO... 4 4.

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Introdução ao Paradigma OO

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas Operacionais Prof. Marcelo Sabaris Carballo Pinto Gerenciamento de Dispositivos Gerenciamento de Dispositivos de E/S Introdução Gerenciador de Dispositivos Todos os dispositivos

Leia mais

Capítulo 2 Introdução à ferramenta Flash

Capítulo 2 Introdução à ferramenta Flash Capítulo 2 Introdução à ferramenta Flash Índice 1. O uso da ferramenta Flash no projeto RIVED.... 1 2. História do Flash... 4 1. O uso da ferramenta Flash no projeto RIVED. É importante, antes de iniciarmos

Leia mais

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação Multiplexadores Permitem que vários equipamentos compartilhem um único canal de comunicação Transmissor 1 Receptor 1 Transmissor 2 Multiplexador Multiplexador Receptor 2 Transmissor 3 Receptor 3 Economia

Leia mais

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO Intranets FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO As intranets são redes internas às organizações que usam as tecnologias utilizadas na rede mundial

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

TRABALHO COM GRANDES MONTAGENS

TRABALHO COM GRANDES MONTAGENS Texto Técnico 005/2013 TRABALHO COM GRANDES MONTAGENS Parte 05 0 Vamos finalizar o tema Trabalho com Grandes Montagens apresentando os melhores recursos e configurações de hardware para otimizar a abertura

Leia mais

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO 10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE

Leia mais

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert: BRAlarmExpert Software para Gerenciamento de Alarmes A TriSolutions conta com um produto diferenciado para gerenciamento de alarmes que é totalmente flexível e amigável. O software BRAlarmExpert é uma

Leia mais

Introdução a listas - Windows SharePoint Services - Microsoft Office Online

Introdução a listas - Windows SharePoint Services - Microsoft Office Online Page 1 of 5 Windows SharePoint Services Introdução a listas Ocultar tudo Uma lista é um conjunto de informações que você compartilha com membros da equipe. Por exemplo, você pode criar uma folha de inscrição

Leia mais

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos Programação Estruturada e Orientada a Objetos Fundamentos Orientação a Objetos 2013 O que veremos hoje? Introdução aos fundamentos de Orientação a Objetos Transparências baseadas no material do Prof. Jailton

Leia mais