Geração Automática de Classes Testadoras

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

Download "Geração Automática de Classes Testadoras"

Transcrição

1 Geração Automática de Classes Testadoras Abstract The goal of this paper is to present a tool intended for automatic generation of tester classes to Java classes. The focus is to show ways of testing classes, ensuring the importance of software testing to obtain reliable programs and also to address some test techniques as soon as the class is built in order to avoid possible errors propagate. Keywords Java programming language, reflection, introductory teaching of testing and debugging in Java programs. Resumo O objetivo desse artigo é a apresentação de uma ferramenta para geração automática de classes testadoras para classes Java. O foco é apresentar formas de testar classes, ressaltando a necessidade do teste de software para obtenção de programas confiáveis bem como incentivando o uso de técnicas de teste tão logo a classe seja construída para que possíveis erros não se propaguem. Palavras Chave Linguagem de programação Java, reflexão, ensino introdutório de teste e depuração de programas Java. I. INTRODUÇÃO Recentemente tem-se observado um aumento significativo na utilização de linguagens orientadas a objetos em disciplinas de introdução à programação. Dentre essas linguagens, Java tem sido uma escolha freqüente pois atende a uma variedade de domínios de aplicação visto que possui uma excelente expressividade, apoiada em suas diversas bibliotecas. Assim, a linguagem pode ser adotada não apenas para expressar algoritmos em cursos introdutórios, mas também para atender as necessidades de programação ao longo de um curso de graduação, a exemplo de programação concorrente, distribuída, gráfica e programação para Internet. Outrossim, é importante direcionar os estudos, durante a graduação, visando satisfazer não apenas as tendências tecnológicas presentes, mas também objetivando propiciar uma sólida base conceitual que permita ao estudante enfrentar as mudanças futuras[1]. Um conceito muito importante e que nem sempre é abordado em disciplinas introdutórias, com a devida ênfase, é o teste de software. Testar uma aplicação orientada a objetos é uma atividade complexa, se comparada ao teste procedimental, uma vez que engloba diversos conceitos ao mesmo tempo, tais como ligação dinâmica, encapsulamento, herança e polimorfismo. O contexto desse trabalho é introduzir o teste de classe de forma simples, aberta, clara e precisa. Para tanto, resolveu-se utilizar o conceito de programa testador ( driver program ), o qual compreende uma classe que testa a interface pública de uma outra classe especificada, incluindo suas dependências em relação a outras classes. Para um aluno de um curso introdutório, entender o significado de uma classe de teste, bem como construí-la, não é uma tarefa simples, pois além de ter que determinar quais os casos de teste, existe a preocupação com os relacionamentos de classes e questões de acessibilidade. Pretende-se com este trabalho estimular o teste de software desde as disciplinas introdutórias até as disciplinas mais específicas, buscando convencer o aluno iniciante em programação de que o teste é fundamental para a qualidade de qualquer sistema computacional e portanto deve ser conduzido junto com o processo de implementação. Na seção II discute-se os erros que podem ocorrer em programas e introduz-se o conceito de ferramentas de teste. Na seção III aborda-se casos de teste, onde relata-se os conceitos envolvidos na criação da classe testadora para classes Java sugerindo casos de teste. Na seção IV é discutido o teste funcional e o teste de estados com relação à linguagem Java; na V descreve-se as facilidades desenvolvidas para a ferramenta de geração de classes testadoras e suas particularidades. Finalmente a seção VI apresenta as conclusões e algumas perspectivas de trabalhos futuros.

2 II. ERROS EM PROGRAMAS E DEPURAÇÃO O teste de software consiste em um processo para executar um programa ou sistema com a finalidade de encontrar erros [3]. Os erros em um programa podem ser classificados em: (i) (ii) (iii) erros sintáticos: compreendem erros vinculados com a não conformidade de uma instrução com as regras sintáticas. Esses erros são automaticamente detectados pelo compilador; erros semânticos (ou erros lógicos): o programa está sintaticamente correto, porém o resultado obtido não é o pretendido; erros de execução: consistem nos erros surgidos durante a execução do programa (por exemplo divisão por zero, overflow, violação nos limites de um array). Assim, o teste de software é utilizado para detectar a presença de possíveis erros em um programa, abrangendo de forma ampla todos os tipos de erros, enquanto a depuração objetiva identificar, localizar e corrigir erros semânticos e de execução de forma mais dirigida, procurando inclusive introduzir falhas no software para observar seu comportamento. Portanto, se testes, no seu sentido mais abrangente, são essenciais no processo de desenvolvimento, quanto mais minuciosos e específicos se desenvolverem, mais contribuem para a qualidade do produto final. Enquanto que na programação orientada a procedimentos é usual que um programa seja monobloco, no sentido de existir uma única unidade de compilação, no modelo de objetos a estrutura mais usual é um programa formado por um conjunto de classes, sendo a classe uma unidade independente de compilação. Assim, se um programa monobloco sempre contém um bloco principal, a partir do qual se desencadeia o processo de execução, no modelo de objetos possivelmente apenas uma classe contém o método principal, responsável pela instanciação e interação entre os objetos. Esta granularidade, que promove a reutilização e permite que um programa seja composto por classes interrelacionadas, exige que o teste também seja feito de forma granular, incremental, classe por classe. Segundo Herbert[2] é impossível testar todas as combinações de objetos gerados a partir de uma classe. Assim a solução encontrada é testar todas as classes de forma isolada o teste de classe. O objetivo da técnica de teste incremental de classes [2,5], é realizar testes de classes isoladamente, reutilizando casos de teste na hierarquia de herança, sempre que possível. Para que isto seja feito, basta criar uma classe separada que instancie objetos de cada classe alvo do teste, para testar os seus atributos e métodos, considerando suas dependências em relação a outras classes. Existem diversas ferramentas que dispõem de depuradores para classes Java. Algumas dessas ferramentas, por serem dirigidas a profissionais, muitas vezes exigem razoável conhecimento da linguagem, da ferramenta, e de técnicas de testes e, portanto, podem se tornar bem complexas de utilizar. Além disso, a maioria dessas ferramentas somente permite que uma classe seja depurada se contiver um método main. Para um aluno iniciante esse fato torna-se bastante complicado, pois, quando implementa-se uma classe para representar dados e suas operações, os únicos métodos implementados nela são os que atuam sobre tais dados, por exemplo métodos de leitura (get) e de escrita (set). Portanto, para testar tal classe deve ser inserido um método main ou ser criada, de forma separada, uma classe testadora específica. A geração automática de uma classe testadora, juntamente com um conjunto de casos de teste, para cada classe desenvolvida pelo usuário, além de possibilitar a depuração e a futura correção de erros, objetiva estimular a compreensão de como testar as classes e incitar o aluno a desenvolver testes para seus programas. III. CASOS DE TESTE Sabe-se que testar todas as possibilidades de entrada para um determinado tipo de dado é na maioria das vezes inviável, pois pode abranger um domínio de valores muito extenso. Todavia, com relação a teste de classes Java, a condução do

3 processo deve ser realizada observando-se o seguinte: (i) Teste de construtores: com o teste de construtores, objetiva-se testar todos os construtores da classe alvo para que se possa certificar que a entrada de argumentos não esperados não prejudique a execução correta do programa e que o objeto criado contenha os valores desejados. (ii) Teste de métodos: com o teste funcional de cada método, pretende-se controlar o comportamento do objeto executando-se seus métodos para assegurar que funcionam conforme o esperado, isto é, que valores inválidos (valores que não estejam dentre a faixa de valores idealizados para a execução de tal método) não causem exceções não tratadas que ocasionem o término do programa de forma indesejada. Encontrar bons casos de teste é um problema, pois há uma infinidade de possibilidades a serem testadas. No entanto, cada classe é criada com algum objetivo próprio, com isso, possivelmente o aluno saberá valores apropriados para serem casos de teste. Embora a escolha de casos de testes possa ser realizada pelo aluno, sugere-se que, com relação a valores numéricos, sejam eles primitivos ou invólucro (wrappers), sejam testados os limites inferior e superior da faixa de representação do tipo, o valor zero e valores aleatórios (um positivo e um negativo). Além disso, é importante lembrar que a representação alfanumérica da linguagem Java é Unicode, dessa forma, alguns casos de teste para caracteres e Strings poderiam conter valores não pertencentes aos alfabetos ocidentais. Para fins de teste podem ser gerados diversos Strings contendo caracteres selecionados. Um aspecto a ser pensado com relação a linguagens orientadas a objeto são as relações de composição, ou seja, objetos que contém representações de outros objetos, e herança, onde uma classe é derivada de outra classe construída pelo usuário. Essas relações dificultam a elaboração do teste e sugerem, como princípio básico, que uma classe deve ser testada logo após sua construção. Isso implica que, quando houver composição, a classe utilizada seja testada antes de testar a classe que a utiliza e, no caso de herança, a superclasse também deverá ser testada anteriormente. Por exemplo, considerando a classe alvo (Pessoa.java) mostrada na Figura 1, sem herança explícita e sem composição com classes do usuário, uma classe de teste bem simples (TestadorPessoa) pode ser construída como mostrado na Figura 2. class Pessoa{ private String nome; private int idade; public Pessoa(){ nome = ""; idade = 0; public Pessoa(String s, int i){ nome = s; idade = i; public String getnome(){ return nome; public int getidade(){ return idade; public void setnome(string s){ nome = s; public void setidade(int i){ idade = i; Fig. 1. Código da Classe Alvo class TestadorPessoa{ public static void main(string args[]){ // Teste de Construtores Pessoa tp1 = new Pessoa("valor1", ); Pessoa tp2 = new Pessoa(); // Teste de Metodos String ret1; ret1 = tp1.getnome(); System.out.println("ret1: " + ret1); ret1 = tp2.getnome(); System.out.println("ret1: " + ret1); int ret2; ret2 = tp1.getidade(); System.out.println("ret2: " + ret2); ret2 = tp2.getidade(); System.out.println("ret2: " + ret2); tp1.setnome("valor1"); tp2.setnome("valor1"); tp1.setidade( ); tp2.setidade( ); Fig. 2. Classe de Teste Os casos de testes que foram gerados automaticamente poderão ser modificados pelo aluno, bem como novos casos de teste poderão ser incluídos através da edição do texto fonte da classe de teste. Assim, a interação com o código da classe

4 testadora estimulará o desenvolvimento de testes que mais se aproximem do objetivo do aluno. IV. TESTE FUNCIONAL E TESTE DE ESTADOS A execução do método main da classe TesdadorPessoa (Figura 2) produziria simplesmente os dados de saída mostrados na Figura 3. Ou seja, o resultado do teste não mostra informações a respeito do comportamento dos métodos que não retornam valores e não exibem resultados. ret1: valor1 ret1: ret2: ret2: 0 Fig. 3. Resultado da execução da classe de teste Quando mais informações de depuração se fizerem necessárias, outras técnicas de teste devem ser empregadas, a exemplo da técnica de testes de estados. Segundo Herbert [2], de acordo com Binder [8], o comportamento de uma classe é definido por determinado conjunto de valores encapsulados que a classe possui em determinado momento. Assim, o comportamento da classe é controlado por valores encapsulados, seqüências de mensagens, ou ambos. A partir deste conceito, um pequeno conjunto de comportamentos pode ser definido por um grande número de seqüências de mensagens e valores. O teste de estados exige o acompanhamento do processo de execução, incluindo a inspeção de variáveis de classe e de instância, independentemente de seus atributos de acesso (público, privativo, protegido). Pode ser implementado de forma intrusiva, através da inserção no código de vários comandos de depuração para exibir as informações desejáveis a cada instante do processo de execução. De forma não intrusiva, pode implementado através de reflexão computacional, técnica esta que permite tanto a obtenção de informações sobre a estrutura de classes quanto a alteração dinâmica de atributos. A seção V fornece mais detalhes a respeito do teste de estados. V. GERADOR DE CLASSES TESTADORAS: A. Teste Funcional A classe testadora destinada ao teste funcional preocupa-se em testar todos os construtores da classe alvo, bem como todos os métodos públicos, partindo do pressuposto que métodos privativos e protegidos são utilizados pelos públicos, mantendose assim o encapsulamento de dados. A obtenção das informações sobre os construtores e métodos da classe para fins de criação automática de uma classe testadora, é feita utilizando-se reflexão computacional a partir de uma classe compilada pelo usuário. A utilização de uma classe já compilada com sucesso assegura que erros sintáticos já foram resolvidos. O testador de classes possui uma interface bastante simples de usar, como pode ser visto na Figura 4: a geração, a compilação e a execução da classe testadora é feita através de um menu e a classe gerada é exibida em uma janela de texto. Fig. 4. Interface do gerador de classes de teste Pode-se observar que a classe de teste é criada com código fonte em Java, e assim poderá ser editada, compilada e executada em qualquer

5 plataforma. Apesar de obtermos um código simples e de fácil entendimento para o aluno, ainda não é possível obter resultados mais precisos, como sugere o teste de Binder [8], onde também são mostrados resultados sobre métodos sem retorno. b) Teste de estados Como esta técnica é mais complexa na sua implementação, contendo código para a interceptação de invocação de métodos e inspeção dinâmica de valores, optou-se por oferecer esta possibilidade através de um menu inserido em um ambiente de desenvolvimento, sem disponibilizar o código de testes gerado. Para este fim, foi feita uma extensão no ambiente JEduc [6], inteiramente desenvolvido em Java. Essa extensão inclui a ferramenta de geração de classes testadoras no ambiente, a partir da qual é feita a versão mais complexa que permite, durante a execução, uma inspeção mais minuciosa das trocas de mensagens entre objetos como sugere Binder[8]. O ambiente JEduc[6] foi desenvolvido com o intuito de minimizar alguns problemas relacionados ao ensino de Java como primeira linguagem de programação, bem como procurar oferecer apoio à migração do modelo orientado a procedimentos para o modelo de objetos. Para atender estas finalidades, inclui um conjunto de classes simplificadoras de entrada e saída via console e arquivos tipados e não-tipados e tratamento de exceções. Esse ambiente permite editar, compilar e executar classes Java através de menus e ícones, além de fornecer outras facilidades, incluindo a possibilidade de inserção de gabaritos de códigos Java referentes a comandos básicos, tais como, repetições, comandos condicionais, entre outros. A classe de teste de estados gerada possui um código bastante similar ao de teste funcional, porém é utilizado um objeto Proxy criado sobre uma interface da classe alvo de teste para interceptar as mensagens entre os objetos e uma meta-classe para obter e exibir as informações desejadas, a saber: nome do método invocado, parâmetros usados na sua invocação, valores das variáveis de instância e de classe antes e após a invocação. Essa estrutura fica escondida do aluno, por sua aparente complexidade. É impraticável inserir esse código na classe testadora visível ao aluno, pois o objetivo é incentivar a elaboração de testes, bem como facilitar a compreensão do mesmo. A partir dessa estrutura adicional, a execução da classe testadora nesse ambiente obterá como resultado todas as trocas de mensagens entre os objetos, possibilitando a verificação da existência de erros com base nos casos teste aplicados a classe alvo. Dessa forma a execução da classe testadora ocasionaria o resultado como na Figura 5. VI. Fig. 5. Teste de estados CONCLUSÕES E PERSPECTIVAS FUTURAS Este trabalho reflete a preocupação da abordagem do teste de software desde cursos introdutórios a fim de incentivar o aluno para que, além de utilizar boas técnicas de programação, também utilize boas técnicas de teste de software para obtenção de programas confiáveis. Os programas desenvolvidos no decorrer de um curso de programação cumprem seu objetivo ao funcionar para alguns casos de teste. Uma vez que não se destinam ao mercado, as exigências de testes

6 são mais brandas, mas a importância da atividade de teste deve ser enfatizada como prática imprescindível e indissociável do processo de programação. Além disso, o crescimento da utilização da linguagem Java em cursos introdutórios exige que uma abordagem de teste orientado a objetos seja usada. No entanto, essa abordagem nem sempre é facilmente compreendida, principalmente por alunos iniciantes. Sendo assim, uma ferramenta de geração automática de classes testadoras, visa incentivar a prática de testes bem como estimular o entendimento do teste orientado a objetos. Como perspectivas para trabalhos futuros, pretende-se incluir uma interface gráfica que permita ao usuário selecionar casos de teste para geração da classe testadora e também permitir a inclusão de novos testes, sem o aluno precisar codificar tal teste. No estado atual da ferramenta, é possível modificar ou incluir casos de teste reformulando o código da classe testadora. Objetiva-se, também, a integração com um depurador com mais funcionalidades, tal como a ferramenta jdb (Java Debugger), incluída no pacote de desenvolvimento J2SDK da Sun MicroSystems [9], que permite a inserção de pontos de parada no código a ser executado, verificação do conteúdo das variáveis utilizadas, da pilha de execução, entre outras verificações, de modo a facilitar ao máximo o processo de depuração. Existem diversas ferramentas profissionais baseadas na ferramenta jdb, lembrando que muitas delas não são de uso livre. Apesar de todas essas facilidades, o aluno, para utilizá-la, deverá submeter para o processo de depuração uma classe com o método main, e essa ferramenta deve ser utilizada em linha de comando. Este depurador tem sua execução realizada através de linhas de comando parametrizadas, exigindo assim, bastante conhecimento de suas numerosas opções de execução. Pretende-se integrar a ferramenta jdb ao gerador de classes testadoras de modo a propiciar a depuração utilizando um ambiente gráfico e de uso intuitivo, para promover uma fácil compreensão para o aluno. Com essa integração, o aluno, além de conseguir gerar uma classe de testes (possuindo um método main, a qual poderá ser submetida ao processo de depuração), conseguirá rastrear e corrigir erros de execução, exceções não tratadas e erros semânticos não previstos na codificação da classe. REFERÊNCIAS [1] Perego, C. A., Lisboa, M. L. B., Bertagnolli, S. C., A Migração de Pascal para Java: Problemas e Propostas de Solução. In: Workshop sobre Educação em Computação, WEI 2002, 2002, Florianópolis. [2] Herbert, J. S., Price, A. M., Técnicas e Ferramentas de teste para a Linguagem Java. In: Simpósio Brasileiro de Linguagens de Programação, SBLP 99, Porto Alegre, maio de Tutorial Apresentado. [3] Myers, G. The Art of Software Testing, Publication info: New York: John Willey & Sons, [4] Bertagnolli, S., Lisboa, M. L. B., Lima, M. J., JEduc: Uma extensão para guiar o teste e a depuração de classes. Artigo submetido ao CEISEC, [5] Harrold, M. J. et al. Incremental Testing of Object-Oriented Class Structure. In: 14th International Conference on Software Engineering, ACM [6] Perego, C. A., Bertagnolli, S. C., Lisboa, M. L. B., JEduc: Um ambiente dedicado ao ensino de Java.CLEI 2002, Montevideo, Uruguai, novembro [7] Jtest: Automatic Software and Component Test. junho [8] Binder, R.V., State-Based Testing. Object, vol.5(6). Julho-Agosto [9] Sun Microsystems. junho 2003.

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

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental Orientação a Objetos (OO) LPG II - Java Orientação a Objetos (OO) Roberto Vedoato vedoato@joinville.udesc.br Programação Procedimental x Orientada a Objetos Objetivos e Benefícios da Orientação a Objetos

Leia mais

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

Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de Orientação a Objetos (OO) Roberto Vedoato vedoato@joinville.udesc.br Programação Procedimental x Orientada a Objetos Objetivos e Benefícios

Leia mais

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Notas de Aula 03: Introdução a Orientação a Objetos e a UML Notas de Aula 03: Introdução a Orientação a Objetos e a UML Objetivos da aula: Introduzir os conceitos da Orientação à Objetos (O.O) Introduzir os conceitos da UML Relacionar os processos às ferramentas

Leia mais

Introdução a Teste de Software

Introdução a Teste de Software Universidade Católica de Pelotas Tecnólogo em Análise e Desenvolvimento de Sistemas Disciplina de Qualidade de Software Introdução a Teste de Software Prof. Luthiano Venecian 1 Conceitos Teste de software

Leia mais

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software Teste de Software Competência: Entender as técnicas e estratégias de testes de Software Conteúdo Programático Introdução O que é teste de software? Por que é necessário testar um software? Qual a causa

Leia mais

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo Teste de Software Técnica de Teste Estrutural Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Casos de Teste e Cenários de Teste Técnicas de Teste Técnica de Teste Estrutural 2 Casos

Leia mais

Projeto de Linguagem. Linguagens de Programação

Projeto de Linguagem. Linguagens de Programação Projeto de Linguagem Renato Ferreira Linguagens de Programação Linguagens são adotadas para preencher uma demada Facilitar uma aplicação outrora difícil/impossível Independente da qualidade da linguagem

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Paradigma de orientação a Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Contextualização Paradigma de orientação a Contextualização A construção

Leia mais

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 9 Tratamento de Exceções Assertivas 1 Programa Capítulo 9 Tratamento

Leia mais

Testador Automático de Classes: uma ferramenta para avaliar programas em Java

Testador Automático de Classes: uma ferramenta para avaliar programas em Java Testador Automático de Classes: uma ferramenta para avaliar programas em Java Ingrid Oliveira de Nunes 1, Maria Lúcia Blanck Lisbôa 1 1 Instituto de Informática - Universidade Federal do Rio Grande do

Leia mais

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 9 Tratamento de Exceções Assertivas Programa Capítulo

Leia mais

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

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

Leia mais

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

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013 Introdução à orientação a objetos João Tito Almeida Vianna 18/05/2013 Roteiro Aula 1 Introdução: Programação estruturada x Orientação a objetos Orientação a objetos Classe e objeto Encapsulamento Herança

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

Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa

Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa Desenvolvimento de programas 1 Análise do problema Desenvolvimento do algoritmo Codificação do programa Compilação e execução Teste e depuração Análise do problema 2 Conhecer exatamente o que o problema

Leia mais

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

Classes o Objetos. Classes, objetos, métodos e variáveis de instância Classes o Objetos Um recurso comum de cada aplicativo feito até agora é que todas as instruções que realizavam tarefas localizavam-se no método main. Se você tornar parte de uma equipe de desenvolvimento

Leia mais

SSC 0721 Teste e Validação de Software

SSC 0721 Teste e Validação de Software SSC 0721 Teste e Validação de Software Conceitos básicos Prof. Marcio E. Delamaro delamaro@icmc.usp.br SSC 0721 Teste e Validação de Software ICMC/USP p. 1 O que é teste Atividade de executar um programa

Leia mais

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

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos Encapsulamento e Métodos (Construtores e Estáticos) Sobrecarga de Métodos João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre Encapsulamento; Variável this; Métodos Construtores;

Leia mais

Obs.: para realizar estas atividades tenha certeza de que já tenha instalado no sistema operacional o Java JDK e o NetBeans.

Obs.: para realizar estas atividades tenha certeza de que já tenha instalado no sistema operacional o Java JDK e o NetBeans. 1 - Criando meu primeiro programa em Java Para criar um programa Java podemos utilizar um editor de textos (Bloco de Notas/Windows, Notepad ++ ou GEdit/Linux) e o console do sistema operacional, ou um

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Pacotes e Encapsulamento Msc. Paulo de Tarso F. Júnior 1 Introdução Permite o agrupamento de classes em uma coleção chamada pacote Um pacote é uma coleção de classes e interfaces

Leia mais

4 Conceito de Herança

4 Conceito de Herança 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Os princípios do desenho orientado a objetos

Os princípios do desenho orientado a objetos Os princípios do desenho orientado a objetos Os princípios do desenho orientado a objetos Encapsulamento e congeneridade Domínios, grau de dependência e coesão Os perigos da herança e do polimorfismo Encapsulamento

Leia mais

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo Tratamento de Exceções LPG II Java Tratamento de Exceções Introdução Princípios do tratamento de exceções em Java Cláusula try Cláusula catch Cláusula finally Hierarquia de exceções em Java Considerações

Leia mais

Orientação a Objetos e Java

Orientação a Objetos e Java Orientação a Objetos e Java Daves Martins davesmartins@yahoo.com.br Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características

Leia mais

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

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Professora Sheila Cáceres Variáveis locais Campos são um tipo de variável. Eles: armazenam valores por toda a vida de um objeto; e

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Curso Profissional de Gestão e Programação de Sistemas Informáticos Disciplina: Programação e Sistemas de Informação Programação Orientada a Objetos Módulos 9/10/11 POO 2016/2017 História A OO surgiu no

Leia mais

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 1.1 - O teste nas fases de vida e de desenvolvimento de um software. 1.2 - O teste na engenharia de sistemas e na engenharia de

Leia mais

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans Roteiro Introdução Conceitos de Oientação a Objetos A Linguagem Java NetBeans (www.netbeans.org) Fernando Vieira Paulovich paulovic@icmc.usp.br

Leia mais

Requisitos de sistemas

Requisitos de sistemas Requisitos de sistemas Unidade III - Casos de Uso Identificação de casos de uso Conceitos de orientação a objetos Modelagem do diagrama de classes e casos de uso 1 Casos de uso CONCEITO Especifica o comportamento

Leia mais

Testes de software - Teste funcional

Testes de software - Teste funcional Testes de software - Teste funcional Vitor Alcântara de Almeida Universidade Federal do Rio Grande do Norte Natal, Brasil 30 de outubro de 2014 Alcântara (UFRN) Testes de software - Testes funcionais 30

Leia mais

Linguagem de Programação. Diagrama de classes

Linguagem de Programação. Diagrama de classes Linguagem de Programação Diagrama de classes Joyce França Professora de Ciência da Computação - IFNMG 2 Agenda Diagrama de classes Herança Associação Agregação Exercícios 3 Diagrama de classes Mostra um

Leia mais

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

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural

Leia mais

Linguagem Técnica I. Prof. Jonatas Bastos

Linguagem Técnica I. Prof. Jonatas Bastos Linguagem Técnica I Prof. Jonatas Bastos Email: jonatasfbastos@gmail.com 1 Objetivo da Disciplina p Entender os conceitos da programação orientada a objetos; p Aplicar conceitos básicos relativos a objetos

Leia mais

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos. AULA 02 OBJETIVO: Características da Linguagem Orientada a Objetos. HABILIDADES TRABALHADAS: Comparação das características das linguagens orientadas a objetos frente às linguagens estruturadas. Conhecimentos

Leia mais

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli Programa de computador sequência de comandos ou instruções executados por um computador com a finalidade de produzir um resultado e resolver um problema; Linguagem de programação método para a criação

Leia mais

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software Engenharia de Software Aula 17 Desenvolvimento de Software Testes de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 7 Maio 2012 1. Especificação de requisitos 2. Projeto

Leia mais

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

Java para Desktop. Programação Orientada à Objetos 2 JSE Java para Desktop Programação Orientada à Objetos 2 JSE Encapsulamento significa "ocultar informações, ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona

Leia mais

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Programação Orientada a Objetos 1.1 - Perspectiva histórica: Conceitos A evolução das linguagens de programação tem-se feito na procura de ferramentas: -cada vez mais próximas da percepção humana - e que

Leia mais

MÓDULO 10 INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA POR OBJETOS O QUE É A PROGRAMAÇÃO ORIENTADA POR OBJETOS 10

MÓDULO 10 INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA POR OBJETOS O QUE É A PROGRAMAÇÃO ORIENTADA POR OBJETOS 10 ÍNDICE MÓDULO 10 INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA POR OBJETOS 9 10.1 O QUE É A PROGRAMAÇÃO ORIENTADA POR OBJETOS 10 Como surgiu a programação orientada por objetos (POO) 10 Conceitos centrais da POO

Leia mais

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

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

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

Orientação a Objetos AULA 09

Orientação a Objetos AULA 09 Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este

Leia mais

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema: Modelos de Ciclo de Vida e Metodologias de Software 33) No SCRUM, uma iteração que segue um ciclo (PDCA) e entrega incremento de software pronto é denominada: A) Backlog. B) Sprint. C) Daily scrum. D)

Leia mais

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno. Interfaces Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Interfaces É utilizada para agrupar conceitos em

Leia mais

Polimorfismo. O que é polimorfismo?

Polimorfismo. O que é polimorfismo? O que é polimorfismo? Polimorfismo Significa que variáveis podem referenciar mais do que um tipo. Não é um conceito novo e várias linguagens de programação aplicam. Funções são polimórficas quando seus

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

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima Gerência de Projetos e Qualidade de Software Prof. Walter Gima 1 OBJETIVO Compreender uma série de técnicas de testes, que são utilizadas para descobrir defeitos em programas Conhecer as diretrizes que

Leia mais

Programação Java (nível intermediário) 4. Polimorfismo

Programação Java (nível intermediário) 4. Polimorfismo Programação Java (nível intermediário) 4 Polimorfismo Introdução Uma linguagem orientada a objetos nos permite definir novos tipos para variáveis Nós definimos um novo tipo através de uma classe Este tipo

Leia mais

Polimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo

Polimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo Polimorfismo: aprendendo a prever o futuro BSI Bacharelado em Sistemas de Informação LOO Linguagens Orientadas a Objetos Sumário Definições Tipos de Polimorfismo Dicas para o Polimorfismo Eficaz Armadilhas

Leia mais

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

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão e Objetos em Java Algoritmos e Programação I Aula 9 Profa. Márcia Cristina Moraes mmoraes@inf.pucrs.br Profa. Sílvia M. W. Moraes silvia@inf.pucrs.br Prof. Marcelo H. Yamaguti yamaguti@inf.pucrs.br Prof.

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

Programação Java. - Classes, Objetos, Atributos e Métodos - Marco Fagundes Marco Fagundes -

Programação Java. - Classes, Objetos, Atributos e Métodos - Marco Fagundes Marco Fagundes - Programação Java - Classes, Objetos, Atributos e Métodos - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Programação Orientada a Objetos Classes e Objetos Definindo e Instanciando Classes Atributos

Leia mais

Conceitos Básicos de Programação

Conceitos Básicos de Programação BCC 201 - Introdução à Programação Conceitos Básicos de Programação Guillermo Cámara-Chávez UFOP 1/53 Conceitos básicos I Variável 2/53 Conceitos básicos II Posição de memoria, identificada através de

Leia mais

Problema do Caminho Hamiltoniano

Problema do Caminho Hamiltoniano Universidade de São Paulo Escola de Artes, Ciências e Humanidades Bacharelado em Sistemas de Informação Introdução à Ciência da Computação II Professores Luciano Digiampietri e Fábio Nakano Data de entrega:

Leia mais

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

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira Engenharia de Software Aula 10 Representação dos Conceitos de Orientação a Objetos Prof. Me. Rogério Ferreira 2 Roteiro Representação dos Conceitos OO Mensagens Navegabilidade Pacotes Encapsulamento Herança

Leia mais

Java e sua Sintaxe. Estrutura mínima de um programa em Java: public class Exemplo { }

Java e sua Sintaxe. Estrutura mínima de um programa em Java: public class Exemplo { } Java e sua Sintaxe Java e sua Sintaxe Estrutura mínima de um programa em Java: public class Exemplo { } Como todo programa deve ter um início, convenciona-se que a primeira ação de um programa é a execução

Leia mais

Sumário. Capítulo 1 Introdução 29. Capítulo 2 Utilizando Objetos 59

Sumário. Capítulo 1 Introdução 29. Capítulo 2 Utilizando Objetos 59 Sumário Capítulo 1 Introdução 29 1.1 O que é programação? 30 1.2 A anatomia de um computador 31 1.3 Traduzindo programas legíveis pelo homem em código de máquina 36 1.4 A linguagem de programação Java

Leia mais

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

Módulo 5. Programação Orientada a Objetos. Programação Orientada a Objetos I Java (Rone Ilídio) Módulo 5 Programação Orientada a Objetos Programação Orientada a Objetos I Java (Rone Ilídio) Programação Orientada a Objetos Registro em Pascal: Type Cliente = Record Nome: String; Telefone: String; Idade:

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Algoritmia e Programação APROG. Tecnologia JAVA. IDE Netbeans. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Algoritmia e Programação APROG. Tecnologia JAVA. IDE Netbeans. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31 APROG Algoritmia e Programação Tecnologia JAVA IDE Netbeans Nelson Freire (ISEP DEI-APROG 2012/13) 1/31 Tecnologia Java Sumário Tecnologia Java Desenvolvimento de Programas Ambientes de Desenvolvimento

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Ciência da Computação Prof. Elias Ferreira Elaborador por: Ana Claudia Bastos Loureiro Monção JUNIT Teste de Software Processo de Software Um processo de software pode ser visto como o conjunto de atividades,

Leia mais

Unidade 4 Teste na Implantação do Sistema

Unidade 4 Teste na Implantação do Sistema Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 4.1 Teste de Unidade 4.2 Teste de Integração 4.3 Teste de Validação 4.4 Teste de Sistema 4.5 Teste na Migração Introdução O processo

Leia mais

Processos de software

Processos de software Processos de software 1 Processos de software Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software. 2 Objetivos Introduzir modelos de processos de

Leia mais

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação Análise Semântica Disciplina: Compiladores Equipe: Luiz Carlos dos Anjos Filho José Ferreira Júnior Compiladores Um compilador

Leia mais

Strings e Arrays POO

Strings e Arrays POO Strings e Arrays POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/27 String Uma sequência de caracteres que representa uma informação textual Em Java existe um

Leia mais

Trabalho Prático. Descrição Considere os seguintes dados a respeito de uma pessoa:

Trabalho Prático. Descrição Considere os seguintes dados a respeito de uma pessoa: Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Organização de Arquivos Profa. Dra. Cristina Dutra de Aguiar Ciferri Trabalho

Leia mais

JAVA. Professor: Bruno Toledo

JAVA. Professor: Bruno Toledo JAVA Professor: Bruno Toledo Funcionamento de uma LP Em uma Linguagem de Programação (LP) como C e Pascal, temos o seguinte quadro quando vamos compilar um programa. Código fonte em c Teste.c Gera código

Leia mais

Universidade Federal de Pelotas Bacharelado em Ciência da Computação Programação Orientada a Objetos Prof. Gerson Cavalheiro Material de Apoio 3

Universidade Federal de Pelotas Bacharelado em Ciência da Computação Programação Orientada a Objetos Prof. Gerson Cavalheiro Material de Apoio 3 Universidade Federal de Pelotas Bacharelado em Ciência da Computação Programação Orientada a Objetos Prof. Gerson Cavalheiro Material de Apoio 3 BlueJ Um ambiente Java interativo O ambiente BlueJ foi desenvolvido

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

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Prof. Dr. Daniel Caetano 2014-1 DISCUSSÃO Visão Geral dos Paradigmas Quais os paradigmas mais comuns? Do que é composto um programa

Leia mais

UNIFEI Disciplina Professor

UNIFEI Disciplina Professor UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO02 Enganharia de Software II Enzo Seraphim Nota de aula de Java Encapsulamento

Leia mais

Introdução à Programação de Computadores Fabricação Mecânica

Introdução à Programação de Computadores Fabricação Mecânica Introdução à Programação de Computadores Fabricação Mecânica Edilson Hipolito da Silva edilson.hipolito@ifsc.edu.br - http://www.hipolito.info Aula 04 - Linguagens de Programação, Interpretador, compilador

Leia mais

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

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; Tudo no mundo real pode ser representado por meio do conceito de "objeto": uma planta, uma mesa, uma pessoa, um sentimento,

Leia mais

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro A importância da UML para projetar sistemas. Principais características do diagrama de classes e de sequência.

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

2 O Modelo: SetModel. 2.1 Modelo de Informação

2 O Modelo: SetModel. 2.1 Modelo de Informação O Modelo: SetModel 2 O Modelo: SetModel 2.1 Modelo de Informação Modelo de informação é uma representação abstrata e formal de entidades incluindo suas propriedades, relações e operações que podem ser

Leia mais

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima Gerência de Projetos e Qualidade de Software Prof. Walter Gima 1 OBJETIVOS Compreender o processo de gerenciamento de qualidade e as principais atividades do processo de garantia, planejamento e controle

Leia mais

Programação Orientada a Objetos - 3º semestre AULA 01 Prof. André Moraes

Programação Orientada a Objetos - 3º semestre AULA 01 Prof. André Moraes Pág 3 Programação Orientada a Objetos - 3º semestre AULA 01 Prof. André Moraes 1 APRESENTAÇÃO DA UNIDADE CURRICULAR A unidade curricular de Programação Orientada a Objetos tem por objetivo promover o estudo

Leia mais

No final deste curso, saberás criar programas através da linguagem de programação Java.

No final deste curso, saberás criar programas através da linguagem de programação Java. Programação em Java Programação Formato: Mentored - Online Preço: 415 ( Os valores apresentados não incluem IVA. Oferta de IVA a particulares e estudantes. ) Horário: Flexível das 24h/24h Duração: ~45h

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

Capítulo 2. Orientação a Objetos

Capítulo 2. Orientação a Objetos Capítulo 2 Orientação a Objetos Princípios da Orientação a Objetos Os princípios da orientação a objetos afetam todo o processo de desenvolvimento de software: Seres humanos pensam em termos de substantivos

Leia mais

Fabiano Moreira.

Fabiano Moreira. Fabiano Moreira professor@fabianomoreira.com.br Um pouco de história Java 1.02 (250 classes, lenta) Java 1.1 (500 classes, um pouco mais rápida) Java 2, versões 1.2-1.4 (2300 classes, muito mais rápida)

Leia mais

Linguagens de Programação Classificação

Linguagens de Programação Classificação Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda

Leia mais

Análise e projeto de sistemas

Análise e projeto de sistemas Análise e projeto de sistemas Conteúdo: UML O processo de desenvolvimento de software Prof. Patrícia Lucas A linguagem de modelagem unificada (UML) A UML teve origem em uma tentativa de se unificar os

Leia mais

Simulado para CFPS. Questões de Propósito, Tipo e Fronteira. 1. Um dos objetivos da Análise de Pontos de Função é:

Simulado para CFPS. Questões de Propósito, Tipo e Fronteira. 1. Um dos objetivos da Análise de Pontos de Função é: Questões de Propósito, Tipo e Fronteira 1. Um dos objetivos da Análise de Pontos de Função é: Simulado para CFPS a) Ajudar no processo de depuração de um software. b) Estimar o tamanho de uma equipe de

Leia mais

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

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc. Orientação a Objetos Revisão Conceitos CLASSE CLASSIFICAÇÃO GENERALIZAÇÃO ESPECIALIZAÇÃO HERANÇA INTERFACES POLIMORFISMO SOBRECARGA ENCAPSULAMENTO ABSTRAÇÃO MODULARIZAÇÃO 9 CLASSE Classe é um agrupamento

Leia mais

Programação I Apresentação

Programação I Apresentação Programação I Apresentação Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Referências JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. de M. E.; BIANCHI, F. Algoritmos e Programação

Leia mais

Lição 11 Herança, polimorfismo e interfaces

Lição 11 Herança, polimorfismo e interfaces Lição 11 Herança, polimorfismo e interfaces 1 Objetivos Ao final da lição, o estudante deverá estar apto a: Definir superclasses e subclasses Criar Override de métodos de superclasses Criar métodos e classes

Leia mais

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são: Apêndice A Classe Vector A classe Vector permite a representação de um vetor de dados de maneira similar à de um array, visto na disciplina Programação Orientada a Objetos I, mas com maior flexibilidade.

Leia mais

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos

Leia mais

Programação Orientada a Objetos SANTOS, Rafael (PLT)

Programação Orientada a Objetos SANTOS, Rafael (PLT) Programação Orientada a Objetos SANTOS, Rafael (PLT) Possibilita atribuições em sequência na mesma instrução Retorna o valor atribuído Atribuições compostas: incluem a própria variável: +=, *=, -=, etc

Leia mais

Encapsulamento e Modularização

Encapsulamento e Modularização Encapsulamento e Modularização Departamento de Computação Universidade Federal de Sergipe Encapsulamento Modularização Tipos Abstratos de Dados (TADs) Objetos Classes Conteúdo Encapsulamento Programação

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos PMR2300 Escola Politécnica da Universidade de São Paulo Proposta O mundo real é composto de entidades que interagem entre si para realizar tarefas (objetos). Objetos podem representar entidades concretas

Leia mais

Laboratório 01 NetBeans

Laboratório 01 NetBeans Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 2o. Semestre de 2017 Prof. Renato Pimentel Atividade individual. Laboratório 01 NetBeans 1 Introdução Os

Leia mais