Assistant teacher at University of Brasilia. PhD Student of Computer Science at University of Brasilia.
Atividade para realizar em dupla e entregar via GitHub. Uma entrega por dupla. As entregas deverão ser feitas através de pull-requests no repositório principal, sendo um pull para cada questão. Instruções de como realizar a entrega estão disponíveis aqui.
Prazo para entrega: 4/4/2017 10/04/2017, 23:59:59.
Questão 1: Os termos abaixo estão relacionados ao paradigma de Orientação por Objetos. Defina cada um dos termos com base no livro-texto (Eck, David J. Introduction to Programming Using Java, 6th ed. 2011).
Classe é a estrutura definida pelo programador, contendo atributos e métodos (comportamento) comuns a um conjunto de objetos.
Questão 2: Julgue as seguintes frases como verdadeiras ou falsas e explique o motivo delas estarem certas ou erradas. Nos casos em que julgar uma sentença como errada, altere-a de modo a corrigi-la.
a) Dois objetos instanciados através do método construtor padrão terão o mesmo estado e, portanto, suas referências serão iguais.
b) Uma classe pode ter apenas um método construtor alternativo para instanciação de seus objetos.
c) Retenção de estados é uma propriedade do paradigma OO que permite aos objetos manterem os valores de seus atributos até o momento em que um estímulo externo ao objeto solicite uma alteração no valor de algum atributo.
d) Em Java, o operador . (ponto) serve para acessar somente os métodos de um objeto.
e) Métodos destrutores são aqueles métodos que são chamados explicitamente pelo algoritmo para destruir objetos e liberar os espaços que eles ocupam em memória. Em Java métodos destrutores são implementos com o nome finalize() e definidos em cada classe.
Questão 3: Considere o seguinte cenário:
Um veículo aéreo não-tripulado (VANT, também conhecido como drone é todo e qualquer tipo de aeronave que não necessita de pilotos embarcados para ser guiada. Este tipo de aviões é controlado à distância por meios eletrônicos e computacionais, sob a supervisão de humanos, ou mesmo sem a sua intervenção, por meio de Controladores Lógicos Programáveis (CLP). Fonte: Wikipedia
Drones civis vendidos atualmente possuem, em sua maior parte, as seguintes características:
Característica | Valores (intervalo) |
---|---|
N. de hélices | 4, 6 ou 8 |
Câmera | SD, HD, UHD ou s-UHD |
Vel. vert. max. | de 10 a 16 m/s |
Vel. hor. max. | de 10 a 16 m/s |
Autonomia bateria | de 5 a 30 minutos de voo |
Distância máxima | de 50 metros a 20 kilometros |
Além dessas características, drones possuem as seguintes funções básicas: a) aumentar/diminuir velocidade vertical, b) aumentar/diminuir velocidade horizontal, c) iniciar/interromper gravação da câmera e d) diminuir velocidades máxima (horizontal e vertical) em 50% sempre que a autonomia da bateria for menor do que 5 minutos.
Dado esse cenário, pede-se aos alunos que representem (inicialmente) as características e comportamentos de um drone através de um diagrama de classes e, posteriormente, apresente a implementação dessa classe na linguagem Java.
Questão 4: Considerando a classe definida e implementada na questão 5, pede-se que os seguintes objetos sejam criados a partir do programa principal:
Característica | drone1 | drone2 | drone3 | drone4 |
---|---|---|---|---|
Marca | Hubsan | Hubsan | DJI | DJI |
Modelo | X4 mini | H501S X4 FPV | Mavic Pro | Spreading Wings |
N. de hélices | 4 | 4 | 4 | 8 |
Câmera | SD | HD | UHD | SUHD |
Vel. vert. max. | 10 m/s | 12 m/s | 16 m/s | 16 m/s |
Vel. hor. max. | 10 m/s | 12 m/s | 16 m/s | 16 m/s |
Autonomia bateria | 7 minutos | 20 minutos | 27 minutos | 15 minutos |
Distância máxima | até 150 metros | até 1 kilometro | até 13 kilometros | até 13 kilometros |
Questão 5: Ainda levando em consideração o cenário descrito nas questões 3 e 4, é necessário fazer com que os comandos realizados pelo usuário no controle remoto sejam enviados ao drone. Para isso, é necessário que o controle remoto estabeleça uma conexão com o drone. A partir desse momento é possível enviar os seguintes comandos ao drone: a) aumentar ou diminuir a velocidade vertical em passos de 1 m/s; b) aumentar ou diminuir a velocidade horizontal em passos de 1m/s e, c) ativar ou desativar a câmera. É importante ressaltar que um controle remoto só pode estar conectado a um drone apenas. Por fim, controles remotos possuem baterias com autonomia entre 60 e 90 minutos e alcance entre 20 metros e 20 kilometros.
Desse modo, pede-se nessa questão que seja modelada e implementada em Java a classe que representa as características e o comportamento de um controle remoto, de modo que o drone possa ser comandado a partir do comandos enviados pelo controle remoto.
Questão 6: Sejam os seguintes códigos da ClasseA e da aplicação principal escritas em JAVA.
Questao6.java
Principal.java
Responda as seguintes questões com base nos códigos acima:
a) As referências a1 e a2 para objetos de ClasseA são iguais?
b) Qual o estado de cada dos objetos de cada referência?
c) O que será impresso pela função main da classe Principal se a linha número 11 for igual a:
Questão 7: Seja o seguinte código em Java. Apresente o que será impresso ao final da execução do método main definido na classe Principal.
Questão 8: Considerando as classes Aluno e Curso definidas na questão 7, o que será impresso quando o garbagge collector de Java executar momentos antes do método main() da classe abaixo terminar sua execução?
Questão 9: as cinco instruções listadas abaixo estão definidas no método main() da classe Principal e apresentam erros em suas sintaxes. Apresente quais são os erros, justifique-os e altere as instruções de modo a consertá-los. Considere os códigos das classes Aluno e Turma como sendo os códigos apresentados na questão 7.
Questão 10: sabe-se que um curso em é formado por um conjunto de disciplinas, para as quais são definidas as seguintes características:
Sabe-se ainda que para cada disciplina são criadas diversas turmas. Cada turma é descrita através das seguintes características:
Além disso, é necessário que os alunos se matriculem nessas turmas. Tal procedimento consiste em associar os alunos em uma turma específica (caso haja vagas) e aumentar o número de vagas ocupadas.
Considerando o contexto formado pelas classes Aluno e Curso (vide implementação na questão 7) e a descrição acima, pede-se:
a) em Java, crie uma classe que seja capaz de representar as características e o comportamento de uma turma.
b) Crie as seguintes turmas:
c) associe ambas turmas recem-criadas ao curso de Engenharia de Software,
d) matricule Andre e Maria na turma de orientação por objetos, e Junior na turma de desenvolvimento avançado de software.
[OPEN ACCESS] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011
Última modificação: 7 de abril de 2017, 05:12.