From 9b289d62d8b2cc9ca72a7e9b843b87d329f9a43b Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 13:52:19 -0300 Subject: [PATCH 01/65] Questao 5 --- lectures/oo/exercicio2/atividade2.md | 45 ++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 2fd9bf8..f95b47c 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -70,10 +70,46 @@ Dado esse cenário, pede-se aos alunos que representem (inicialmente) as caracte | 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 5:** +{% highlight java %} +/*MAIN*/ + +package drone; +public class Main { + + public static void main(String[] args) { + Drone drone1; + ControleRemoto controle1; + drone1 = new Drone("Hubsan", "X4 mini", 4, "SD", 10, 10, 7, 150, 1000); + drone1.imprime_estados();/*Estado incial do drone*/ + + controle1 = new ControleRemoto(); + + controle1.x = drone1; /*Controle está conectado ao drone1*/ + controle1.alcance = 10000; /*10km*/ + controle1.nivel_bateria = 100; /*Bateria está 100%*/ + controle1.aumentar_vel_vertical(); + controle1.aumentar_vel_vertical(); + controle1.aumentar_vel_horizontal(); + controle1.iniciar_interromper_gravacao(); + + drone1.imprime_estados();/*Estado depois de alterar as velocidades e + iniciar a gravação*/ + + drone1.distancia = 10005; /*Maior do que o alcance do controle, não + altera os estados*/ + controle1.aumentar_vel_horizontal(); + controle1.aumentar_vel_horizontal(); + controle1.aumentar_vel_vertical(); + controle1.aumentar_vel_vertical(); + + drone1.imprime_estados();/*Estado depois da tentativa de alteração com a + distancia do drone1 maior do que o alcance do controle remoto*/ + } + +} +{% endhighlight java %} **Questão 6:** Sejam os seguintes códigos da *ClasseA* e da aplicação principal escritas em JAVA. @@ -132,6 +168,7 @@ System.out.println(q3 == q2); **Questão 7:** + **Questão 8:** @@ -151,6 +188,4 @@ System.out.println(q3 == q2); - - [eckDavid]: http://math.hws.edu/javanotes/ From 9c266512bb9a4a93522d3882f3384b0423b2e060 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 13:53:12 -0300 Subject: [PATCH 02/65] q5 --- lectures/oo/exercicio2/atividade2.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index f95b47c..d2da481 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -72,12 +72,11 @@ Dado esse cenário, pede-se aos alunos que representem (inicialmente) as caracte **Questão 5:** -{% highlight java %} -/*MAIN*/ +% highlight java % +/*MAIN*/ package drone; public class Main { - public static void main(String[] args) { Drone drone1; ControleRemoto controle1; @@ -109,7 +108,8 @@ public class Main { } } -{% endhighlight java %} + +% endhighlight java % **Questão 6:** Sejam os seguintes códigos da *ClasseA* e da aplicação principal escritas em JAVA. From 962c0e2abcbc068db86b1ce38dbe9f8b671ea1bf Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 13:54:43 -0300 Subject: [PATCH 03/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index d2da481..70a4689 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -72,8 +72,7 @@ Dado esse cenário, pede-se aos alunos que representem (inicialmente) as caracte **Questão 5:** -% highlight java % - +*.java /*MAIN*/ package drone; public class Main { @@ -108,8 +107,7 @@ public class Main { } } - -% endhighlight java % +*.java **Questão 6:** Sejam os seguintes códigos da *ClasseA* e da aplicação principal escritas em JAVA. From dfc8cf38451f27c2184b91e097571b03327866cc Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 13:55:28 -0300 Subject: [PATCH 04/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 70a4689..ae3a91e 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -3,6 +3,12 @@ title: Exercício prático layout: default --- +```ruby +def index + puts "hello world" +end +``` + ### UnB - Universidade de Brasilia ### FGA - Faculdade do Gama ### OO - Orientação por objetos From 4cb7eb9e0106c1abe52b99f3e58c3d77619a68a8 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 13:56:43 -0300 Subject: [PATCH 05/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index ae3a91e..b4d76e8 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -3,12 +3,6 @@ title: Exercício prático layout: default --- -```ruby -def index - puts "hello world" -end -``` - ### UnB - Universidade de Brasilia ### FGA - Faculdade do Gama ### OO - Orientação por objetos @@ -78,7 +72,7 @@ Dado esse cenário, pede-se aos alunos que representem (inicialmente) as caracte **Questão 5:** -*.java +```java /*MAIN*/ package drone; public class Main { @@ -113,7 +107,7 @@ public class Main { } } -*.java +``` **Questão 6:** Sejam os seguintes códigos da *ClasseA* e da aplicação principal escritas em JAVA. From c38d330f2bbc41a77454348acae603846541d9c3 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 13:57:58 -0300 Subject: [PATCH 06/65] =?UTF-8?q?Quest=C3=A3o5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 144 +++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index b4d76e8..bc1eac5 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -73,9 +73,12 @@ Dado esse cenário, pede-se aos alunos que representem (inicialmente) as caracte **Questão 5:** ```java +----------------------------------------------------------------------------------------------------- /*MAIN*/ + package drone; public class Main { + public static void main(String[] args) { Drone drone1; ControleRemoto controle1; @@ -107,6 +110,147 @@ public class Main { } } +----------------------------------------------------------------------------------------------------- + +----------------------------------------------------------------------------------------------------- +/*Classe Drone*/ + +package drone; + + +public class Drone { + int n_de_helices; + String marca; + String modelo; + String camera; + int vel_vert; + int vel_hor; + int vel_vert_max; + int vel_hor_max; + int autonomia_bateria; + int distancia; + int distancia_max; + boolean estado_camera; + + public Drone(){}; + + public void aumentar_vel_vertical(){ + if(vel_vert0){ + vel_vert--; + } + } + + public void aumentar_vel_horizontal(){ + if(vel_hor0){ + vel_hor--; + } + } + + public boolean iniciar_interromper_gravacao(){ + estado_camera = !estado_camera; + return estado_camera; + } + + public void diminuir_vel_max(){ + if(autonomia_bateria < 5){ + vel_hor_max = vel_hor_max/2; + vel_vert_max = vel_vert_max/2; + } + } + + public void imprime_estados(){ + System.out.printf("Marca %s\n", marca); + System.out.printf("Modelo %s\n", modelo); + System.out.printf("Número de hélices = %d\n", n_de_helices); + System.out.printf("Câmera = %s\n", camera); + System.out.printf("Vel.vertical.atual = %d m/s\n", vel_vert); + System.out.printf("Vel.vertical.máx = %d m/s\n", vel_vert_max); + System.out.printf("Vel.horizontal.atual = %d m/s\n", vel_hor); + System.out.printf("Vel.horizontal.máx = %d m/s\n", vel_hor_max); + System.out.printf("Autonomia bateria = %d minutos\n", autonomia_bateria); + System.out.printf("Distância máxima = %d metros\n", distancia_max); + if(estado_camera == false){ + System.out.printf("Estado da camera = Desligada\n"); + } + else{ + System.out.printf("Estado da camera = Ligada\n"); + } + System.out.println(""); + } + + public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d, int dist){ + marca = m; + modelo = model; + n_de_helices = n_hel; + camera = cam; + vel_vert_max = vel_vert; + vel_hor_max = vel_hor; + autonomia_bateria = auton; + distancia_max = d; + distancia = dist; + } +} + +----------------------------------------------------------------------------------------------------- + +----------------------------------------------------------------------------------------------------- + +/*Classe Controle*/ + + +package drone; + +public class ControleRemoto { + Drone x; + int autonomia_bateria; + int nivel_bateria; + int alcance; + + public void aumentar_vel_vertical(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.aumentar_vel_vertical(); + } + } + + public void diminuir_vel_vertical(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.diminuir_vel_vertical(); + } + } + + public void aumentar_vel_horizontal(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.aumentar_vel_horizontal(); + } + } + + public void diminuir_vel_horizontal(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.diminuir_vel_horizontal(); + } + } + + public boolean iniciar_interromper_gravacao(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.iniciar_interromper_gravacao(); + } + return x.estado_camera; + } +} + +----------------------------------------------------------------------------------------------------- ``` **Questão 6:** Sejam os seguintes códigos da *ClasseA* e da aplicação principal escritas em JAVA. From 02f9a284c97fc4020e85682bc05be6217fd0fee8 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 13:59:11 -0300 Subject: [PATCH 07/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index bc1eac5..d36c2ac 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -73,7 +73,7 @@ Dado esse cenário, pede-se aos alunos que representem (inicialmente) as caracte **Questão 5:** ```java ------------------------------------------------------------------------------------------------------ +/////////////////////////////////////////////////////////////////////////////////////////////////////// /*MAIN*/ package drone; @@ -110,9 +110,9 @@ public class Main { } } ------------------------------------------------------------------------------------------------------ +/////////////////////////////////////////////////////////////////////////////////////////////////////// ------------------------------------------------------------------------------------------------------ +/////////////////////////////////////////////////////////////////////////////////////////////////////// /*Classe Drone*/ package drone; @@ -203,10 +203,9 @@ public class Drone { } } ------------------------------------------------------------------------------------------------------ - ------------------------------------------------------------------------------------------------------ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////////// /*Classe Controle*/ @@ -249,8 +248,7 @@ public class ControleRemoto { return x.estado_camera; } } - ------------------------------------------------------------------------------------------------------ +/////////////////////////////////////////////////////////////////////////////////////////////////////// ``` **Questão 6:** Sejam os seguintes códigos da *ClasseA* e da aplicação principal escritas em JAVA. From d5cec75458fb524ea3bf0b88330985bb3dd8e607 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 14:02:49 -0300 Subject: [PATCH 08/65] =?UTF-8?q?Quest=C3=A3o4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 126 ++++++++++++++++++++++++--- 1 file changed, 114 insertions(+), 12 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index d36c2ac..f65fdc7 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -56,18 +56,120 @@ Além dessas características, drones possuem as seguintes funções básicas: a 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 4:** +```java + +/*Main*/ + +package drone; + +public class Main { + public static void main(String[] args) { + Drone drone1; + Drone drone2, drone3, drone4; + drone1 = new Drone("Hubsan", "X4 mini", 4, "SD", 10, 10, 7, 150); + drone2 = new Drone("Hubsan", "H501S X4 FPV", 4, "HD", 12, 12, 20, 1000); + drone3 = new Drone("DJI", "Mavic Pro", 4, "UHD", 16, 16, 27, 13000); + drone4 = new Drone("DJI", "Spreading Wings", 8, "SUHD", 16, 16, 15, 13000); + + drone1.imprime_estados(); + drone2.imprime_estados(); + drone3.imprime_estados(); + drone4.imprime_estados(); + } + +} + +/*Drone class*/ + +package drone; + +public class Drone { + int n_de_helices; + String marca; + String modelo; + String camera; + int vel_vert; + int vel_hor; + int vel_vert_max; + int vel_hor_max; + int autonomia_bateria; + int distancia_max; + boolean estado_camera; + + public Drone(){}; + + public void aumentar_vel_vertical(){ + if(vel_vert0){ + vel_vert--; + } + } + + public void aumentar_vel_horizontal(){ + if(vel_hor0){ + vel_hor--; + } + } + + public boolean iniciar_interromper_gravacao(){ + estado_camera = !estado_camera; + return estado_camera; + } + + public void diminuir_vel_max(){ + if(autonomia_bateria < 5){ + vel_hor_max = vel_hor_max/2; + vel_vert_max = vel_vert_max/2; + } + } + + public void imprime_estados(){ + System.out.printf("Marca %s\n", marca); + System.out.printf("Modelo %s\n", modelo); + System.out.printf("Número de hélices = %d\n", n_de_helices); + System.out.printf("Câmera = %s\n", camera); + System.out.printf("Vel.vertical.atual = %d m/s\n", vel_vert); + System.out.printf("Vel.vertical.máx = %d m/s\n", vel_vert_max); + System.out.printf("Vel.horizontal.atual = %d m/s\n", vel_hor); + System.out.printf("Vel.horizontal.máx = %d m/s\n", vel_hor_max); + System.out.printf("Autonomia bateria = %d minutos\n", autonomia_bateria); + System.out.printf("Distância máxima = %d metros\n", distancia_max); + if(estado_camera == false){ + System.out.printf("Estado da camera = Desligada\n"); + } + else{ + System.out.printf("Estado da camera = Ligada\n"); + } + System.out.println(""); + } + + public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d){ + marca = m; + modelo = model; + n_de_helices = n_hel; + camera = cam; + vel_vert_max = vel_vert; + vel_hor_max = vel_hor; + autonomia_bateria = auton; + distancia_max = d; + } +} + + + +``` **Questão 5:** From a37e35ca024c1cf00a413f325d3bca870b062bb9 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 14:04:25 -0300 Subject: [PATCH 09/65] Questao4 --- lectures/oo/exercicio2/atividade2.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index f65fdc7..6061322 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -59,7 +59,8 @@ Dado esse cenário, pede-se aos alunos que representem (inicialmente) as caracte **Questão 4:** ```java -/*Main*/ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*MAIN*/ package drone; @@ -80,7 +81,12 @@ public class Main { } -/*Drone class*/ + +/////////////////////////////////////////////////////////////////////////////////////////////////////// + + +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*Classe Drone*/ package drone; @@ -166,8 +172,7 @@ public class Drone { distancia_max = d; } } - - +/////////////////////////////////////////////////////////////////////////////////////////////////////// ``` From 2728c4ae86fdeabd1b47307fc3c62f47530c0232 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 14:06:47 -0300 Subject: [PATCH 10/65] Questao3 --- lectures/oo/exercicio2/atividade2.md | 104 ++++++++++++++++++++++----- 1 file changed, 87 insertions(+), 17 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 6061322..dce4fec 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -36,26 +36,96 @@ d) Em Java, o operador . (ponto) serve para acessar somente os métodos de um ob 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](https://pt.wikipedia.org/wiki/Ve%C3%ADculo_a%C3%A9reo_n%C3%A3o_tripulado) - -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. +**Questão 3:**   +```java +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*Classe do Drone*/ +package drone; -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. +public class Drone { + int n_de_helices; + String marca; + String modelo; + String camera; + int vel_vert; + int vel_hor; + int vel_vert_max; + int vel_hor_max; + int autonomia_bateria; + int distancia_max; + boolean estado_camera; + + public Drone(){}; + + public void aumentar_vel_vertical(){ + if(vel_vert0){ + vel_vert--; + } + } + public void aumentar_vel_horizontal(){ + if(vel_hor0){ + vel_hor--; + } + } + + public boolean iniciar_interromper_gravacao(){ + estado_camera = !estado_camera; + return estado_camera; + } + + public void diminuir_vel_max(){ + if(autonomia_bateria < 5){ + vel_hor_max = vel_hor_max/2; + vel_vert_max = vel_vert_max/2; + } + } + + public void imprime_estados(){ + System.out.printf("Marca %s\n", marca); + System.out.printf("Modelo %s\n", modelo); + System.out.printf("Número de hélices = %d\n", n_de_helices); + System.out.printf("Câmera = %s\n", camera); + System.out.printf("Vel.vertical.atual = %d m/s\n", vel_vert); + System.out.printf("Vel.vertical.máx = %d m/s\n", vel_vert_max); + System.out.printf("Vel.horizontal.atual = %d m/s\n", vel_hor); + System.out.printf("Vel.horizontal.máx = %d m/s\n", vel_hor_max); + System.out.printf("Autonomia bateria = %d minutos\n", autonomia_bateria); + System.out.printf("Distância máxima = %d metros\n", distancia_max); + if(estado_camera == false){ + System.out.printf("Estado da camera = Desligada\n"); + } + else{ + System.out.printf("Estado da camera = Ligada\n"); + } + System.out.println(""); + } + + public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d){ + marca = m; + modelo = model; + n_de_helices = n_hel; + camera = cam; + vel_vert_max = vel_vert; + vel_hor_max = vel_hor; + autonomia_bateria = auton; + distancia_max = d; + } +} +/////////////////////////////////////////////////////////////////////////////////////////////////////// +``` **Questão 4:** ```java From 7004597031e8e087baf3cfe1b815dba3ebac8340 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 14:09:14 -0300 Subject: [PATCH 11/65] =?UTF-8?q?Quest=C3=A3o=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index dce4fec..5f47e59 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -483,7 +483,26 @@ System.out.println(q3 == q2); **Questão 7:** - +** +Nome: André +Curso: &c1 +Data de nascimento: 23/2/1983 +** +** +Nome: Maria +Curso: &c2 +Data de nascimento: 27/5/1994 +** +** +Nome: Junior +Curso: &c1 +Data de nascimento: 16/11/1995 +** +** +False +False +True +** **Questão 8:** From 4c4aa2f213a7c8d62c081dfa47e13e9cc3507027 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 14:11:23 -0300 Subject: [PATCH 12/65] q7 --- lectures/oo/exercicio2/atividade2.md | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 5f47e59..a03cbd9 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -483,26 +483,10 @@ System.out.println(q3 == q2); **Questão 7:** -** -Nome: André -Curso: &c1 -Data de nascimento: 23/2/1983 -** -** -Nome: Maria -Curso: &c2 -Data de nascimento: 27/5/1994 -** -** -Nome: Junior -Curso: &c1 -Data de nascimento: 16/11/1995 -** -** -False -False -True -** +**Nome: André

Curso: &c1

Data de nascimento: 23/2/1983

** +**Nome: Maria

Curso: &c2

Data de nascimento: 27/5/1994

** +**Nome: Junior

Curso: &c1

Data de nascimento: 16/11/1995** +**False

False

True

** **Questão 8:** From a0d5e52753385cff663b970263e94e0b40233979 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 14:12:27 -0300 Subject: [PATCH 13/65] =?UTF-8?q?Quest=C3=A3o=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index a03cbd9..c45466b 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -483,10 +483,10 @@ System.out.println(q3 == q2); **Questão 7:** -**Nome: André

Curso: &c1

Data de nascimento: 23/2/1983

** -**Nome: Maria

Curso: &c2

Data de nascimento: 27/5/1994

** -**Nome: Junior

Curso: &c1

Data de nascimento: 16/11/1995** -**False

False

True

** +

Nome: André

Curso: &c1

Data de nascimento: 23/2/1983

+Nome: Maria

Curso: &c2

Data de nascimento: 27/5/1994

+Nome: Junior

Curso: &c1

Data de nascimento: 16/11/1995

+False

False

True

**Questão 8:** From c28ac15be3c13ae2868bc0c4839413473e589996 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 14:28:53 -0300 Subject: [PATCH 14/65] q8 --- lectures/oo/exercicio2/atividade2.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index c45466b..efbca8b 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -491,6 +491,25 @@ False

False

True

**Questão 8:** +Impressão do Garbage collector: +Esse objeto ALUNO vai ser destruido. +Detalhes do objeto: + +Nome: Maria +Curso: &c2 +Data de nascimento: 27/5/1994 +Esse CURSO vai ser destruido. +Detalhes do objeto: + +Nome do curso: Engenharia de Software +Codigo: 1 +Carga horaria: 240 +Esse objeto ALUNO vai ser destruido. +Detalhes do objeto: + +Nome: Andre +Curso: &c1 +Data de nascimento: 23/2/1983 **Questão 9:** From 11400fc61d29e452d5a22ecd8bfcf59cc37f9542 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 14:31:37 -0300 Subject: [PATCH 15/65] =?UTF-8?q?quest=C3=A3o=208?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 38 ++++++++++++++-------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index efbca8b..f1c7720 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -491,25 +491,25 @@ False

False

True

**Questão 8:** -Impressão do Garbage collector: -Esse objeto ALUNO vai ser destruido. -Detalhes do objeto: - -Nome: Maria -Curso: &c2 -Data de nascimento: 27/5/1994 -Esse CURSO vai ser destruido. -Detalhes do objeto: - -Nome do curso: Engenharia de Software -Codigo: 1 -Carga horaria: 240 -Esse objeto ALUNO vai ser destruido. -Detalhes do objeto: - -Nome: Andre -Curso: &c1 -Data de nascimento: 23/2/1983 +

Impressão do Garbage collector:

+Esse objeto ALUNO vai ser destruido.

+Detalhes do objeto:

+

+Nome: Maria

+Curso: &c2

+Data de nascimento: 27/5/1994

+Esse CURSO vai ser destruido.

+Detalhes do objeto:

+

+Nome do curso: Engenharia de Software

+Codigo: 1

+Carga horaria: 240

+Esse objeto ALUNO vai ser destruido.

+Detalhes do objeto:

+

+Nome: Andre

+Curso: &c1

+Data de nascimento: 23/2/1983

**Questão 9:** From 276818a4c4c66fc69996237fb665ffa6d80b61c2 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 14:35:25 -0300 Subject: [PATCH 16/65] 8 --- lectures/oo/exercicio2/atividade2.md | 40 +++++++++++++--------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index f1c7720..dc44d6b 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -490,27 +490,25 @@ False

False

True

**Questão 8:** - -

Impressão do Garbage collector:

-Esse objeto ALUNO vai ser destruido.

-Detalhes do objeto:

-

-Nome: Maria

-Curso: &c2

-Data de nascimento: 27/5/1994

-Esse CURSO vai ser destruido.

-Detalhes do objeto:

-

-Nome do curso: Engenharia de Software

-Codigo: 1

-Carga horaria: 240

-Esse objeto ALUNO vai ser destruido.

-Detalhes do objeto:

-

-Nome: Andre

-Curso: &c1

-Data de nascimento: 23/2/1983

- +
Impressão do Garbage collector:
+Esse objeto ALUNO vai ser destruido.
+Detalhes do objeto:
+
+Nome: Maria
+Curso: &c2
+Data de nascimento: 27/5/1994
+Esse CURSO vai ser destruido.
+Detalhes do objeto:
+
+Nome do curso: Engenharia de Software
+Codigo: 1
+Carga horaria: 240
+Esse objeto ALUNO vai ser destruido.
+Detalhes do objeto:
+
+Nome: Andre
+Curso: &c1
+Data de nascimento: 23/2/1983
**Questão 9:** From f713fe24fb941d86f2ec6171ab47a628b03bc155 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 14:37:02 -0300 Subject: [PATCH 17/65] BR --- lectures/oo/exercicio2/atividade2.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index dc44d6b..1b3c654 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -483,14 +483,16 @@ System.out.println(q3 == q2); **Questão 7:** -

Nome: André

Curso: &c1

Data de nascimento: 23/2/1983

-Nome: Maria

Curso: &c2

Data de nascimento: 27/5/1994

-Nome: Junior

Curso: &c1

Data de nascimento: 16/11/1995

-False

False

True

- +

+Nome: André
Curso: &c1
Data de nascimento: 23/2/1983
+Nome: Maria
Curso: &c2
Data de nascimento: 27/5/1994
+Nome: Junior
Curso: &c1
Data de nascimento: 16/11/1995
+False
False
True +

**Questão 8:** -
Impressão do Garbage collector:
+

+Impressão do Garbage collector:
Esse objeto ALUNO vai ser destruido.
Detalhes do objeto:

@@ -509,6 +511,7 @@ Detalhes do objeto:
Nome: Andre
Curso: &c1
Data de nascimento: 23/2/1983
+

**Questão 9:** From 54c6a6895cfd5f34c98f82ed70156ac675976833 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 14:44:38 -0300 Subject: [PATCH 18/65] q9 --- lectures/oo/exercicio2/atividade2.md | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 1b3c654..4d9b42e 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -484,9 +484,9 @@ System.out.println(q3 == q2); **Questão 7:**

-Nome: André
Curso: &c1
Data de nascimento: 23/2/1983
-Nome: Maria
Curso: &c2
Data de nascimento: 27/5/1994
-Nome: Junior
Curso: &c1
Data de nascimento: 16/11/1995
+Nome: André
Curso: &c1
Data de nascimento: 23/2/1983

+Nome: Maria
Curso: &c2
Data de nascimento: 27/5/1994

+Nome: Junior
Curso: &c1
Data de nascimento: 16/11/1995

False
False
True

@@ -513,6 +513,27 @@ Curso: &c1
Data de nascimento: 23/2/1983


**Questão 9:** +```java +package questao9; +public class Principal { + public static void main(String[] args) { + Curso c1, c2; + Aluno a1, a2, a3; + + c2 = new Curso(2, "Engenharia Eletrônica", 257); + + a1 = new Aluno("Andre", c1, 13, 23, 02, 1983); + a2 = new Aluno("Maria", c2, 5, 27, 5, 1994); + + /*Errado! Curso é o nome da classe e não do objeto.*/ Curso.obterDetalhes(); + /*Errado! O objeto c2 não possui o atributo matrícula.*/ c2.matricula = 20; + /*Errado! Curso é o nome da classe e não do objeto.*/ Curso.nome = "Ciência da computação"; + /*Errado! O identificador c1 não chegou a ser instanciado como um objeto.*/ c1.codigo = 21; + /*Errado! Aluno é o nome da classe e não do objeto.*/ Aluno.obterDetalhes(); + /*Errado! A classe aluno no possui o método carga horária e o a3 não foi instanciado.*/ a3.cargaHoraria() = 220; + } +} +``` **Questão 10:** From 2b0e81c3ad313cb2e5d8e0f75a81c8250e229b23 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 14:56:13 -0300 Subject: [PATCH 19/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 75 +++++++++------------------- 1 file changed, 24 insertions(+), 51 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 4d9b42e..9ed74fc 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -428,58 +428,31 @@ public class ControleRemoto { /////////////////////////////////////////////////////////////////////////////////////////////////////// ``` -**Questão 6:** Sejam os seguintes códigos da *ClasseA* e da aplicação principal escritas em JAVA. - -Questao6.java -{% highlight java %} -public class Questao6 { - int a1; - float a2; - String a3; - boolean a4; - - public Questao6() {} - - public Questao6(int a, float b, String c, boolean d){ - a1 = a; - a2 = b; - a3 = c; - a4 = d; - } -} -{% endhighlight%} +**Questão 6:** + +

+*a)*
+Errado! a1 e a2 nem se quer são referências, são atributos da classe Questao6
+
+*b)*
+Estados de q1:
+a1= 0 a2 = 0 a3 = Null a4 = False
+Estados de q2:
+a1= 0 a2 = 0 a3 = Null a4 = False
+Estados de q3:
+a1= 1 a2 = 1.0 a3 = null(A palavra null de fato) a4 = False
+
+*c)*
+False
+True
+False
+True
+True
+False
+

+ + -Principal.java -{% highlight java%} -public class Principal { - public static void main (String[] args) { - Questao6 q1, - q2, - q3; - - q1 = new Questao6(); - q2 = new Questao6(0, 0.0f, null, false); - q3 = new Questao6(1, 1.0f, "null", false); - - //---> local onde a instrução do item c) será inserida. - } -} -{% endhighlight %} -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: -{% highlight java%} -System.out.println(q1 == q2); -System.out.println(q1.a1 == q2.a1); -System.out.println(q2.a3 == q3.a3); -System.out.println(q1.a2 == q2.a2); -System.out.println(q1.a4 == q3.a4); -System.out.println(q3 == q2); -{% endhighlight %} **Questão 7:** From 9e9610e2e36cfa9892d9cd17b0931ff4388633cf Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 15:01:36 -0300 Subject: [PATCH 20/65] Questao 1, 2 e 6 --- lectures/oo/exercicio2/atividade2.md | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 9ed74fc..d0f7e4c 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -21,19 +21,28 @@ Prazo para entrega: ~~4/4/2017~~ 10/04/2017, 23:59:59. * método construtor alternativo * estado de um objeto * retenção de estado - - +

+Classe: A classe contém atributos e métodos, que são responsáveis por descrever objetos ou mais precisamente para criar objetos. Ela é um tipo de fábrica para a construção de objetos. +
+Objetos: Objetos podem ser criados e destruídos do programa, e podem ser criados vários objetos com a mesma estrutura, se eles forem da mesma classe. Objeto é uma instância da classe, ou seja, a classe é uma forma para o objeto. Tratando de um bolo, a classe é a forma do bolo e o bolo é um objeto que pode ser de chocolate, laranja ou do que quer que você queira, e cada bolo que é feito é um novo objeto. +
+Métodos: Os metódos estão dentro de uma classe e fazem parte dos objetos. Métodos são subrotinas que tem como estrutura o modificador, o tipo de retorno e a lista de parâmetros. Os métodos são responsáveis por executar mudanças nos valores dos atributos apenas com a chamada do mesmo, não sendo necessário que a main repita várias vezes o mesmo passo. +
+Atributos: Atributos nada mais são do que as variáveis contidas em uma classe ou em um objeto. Como são variáveis esses valores podem ser alterados sem preocupações. +
+Método construtor padrão: O construtor padrão também é uma subrotina, porém é uma subrotina especial, com o papel de alocar memória para o objeto e inicializar os atributos, retornando a referência para o objeto. Toda classe tem um contrutor padrão assim que ela é criada, mesmo se o programador não declarar ela o sistema irá providenciar um método construtor padrão. +

**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. +a) Falso. Dois objetos podem sim ter o mesmo estador, porém não necesariamente as suas referências serão iguais -b) Uma classe pode ter apenas um método construtor alternativo para instanciação de seus objetos. +b) Falso. Você pode ter mais de um método construtor padrão em sua classe -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. +c) Verdadeiro. A retenção de estado é a propriedade que permite aos objetivo guardarem os seus respectivos estados, porém não tenho como afirmar se existe outros paradigmas com a retenção de estado. -d) Em Java, o operador . (ponto) serve para acessar somente os métodos de um objeto. +d) Falso. Também serve para acessar os atributos. -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. +e) Falso. Não existem métodos destrutores em java. O que existe é o método finalize que é responsável por realizar as últimas operações antes do garbage collector eliminar o objeto da memória. **Questão 3:**   From 710a87e3c2062dee6569847e7319c9fd0cf93816 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 15:02:26 -0300 Subject: [PATCH 21/65] q 1 e 2 --- lectures/oo/exercicio2/atividade2.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index d0f7e4c..a1859e4 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -21,6 +21,7 @@ Prazo para entrega: ~~4/4/2017~~ 10/04/2017, 23:59:59. * método construtor alternativo * estado de um objeto * retenção de estado +

Classe: A classe contém atributos e métodos, que são responsáveis por descrever objetos ou mais precisamente para criar objetos. Ela é um tipo de fábrica para a construção de objetos.
@@ -32,8 +33,8 @@ Atributos: Atributos nada mais são do que as variáveis contidas em uma classe
Método construtor padrão: O construtor padrão também é uma subrotina, porém é uma subrotina especial, com o papel de alocar memória para o objeto e inicializar os atributos, retornando a referência para o objeto. Toda classe tem um contrutor padrão assim que ela é criada, mesmo se o programador não declarar ela o sistema irá providenciar um método construtor padrão.

-**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. - +**Questão 2:** +

a) Falso. Dois objetos podem sim ter o mesmo estador, porém não necesariamente as suas referências serão iguais b) Falso. Você pode ter mais de um método construtor padrão em sua classe @@ -43,7 +44,7 @@ c) Verdadeiro. A retenção de estado é a propriedade que permite aos objetivo d) Falso. Também serve para acessar os atributos. e) Falso. Não existem métodos destrutores em java. O que existe é o método finalize que é responsável por realizar as últimas operações antes do garbage collector eliminar o objeto da memória. - +

**Questão 3:**   ```java From 00e672be1a3f053ddda35d8a9cdf44a43b8182f6 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Sun, 9 Apr 2017 15:02:54 -0300 Subject: [PATCH 22/65] 1 --- lectures/oo/exercicio2/atividade2.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index a1859e4..3dc4197 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -24,13 +24,13 @@ Prazo para entrega: ~~4/4/2017~~ 10/04/2017, 23:59:59.

Classe: A classe contém atributos e métodos, que são responsáveis por descrever objetos ou mais precisamente para criar objetos. Ela é um tipo de fábrica para a construção de objetos. -
+

Objetos: Objetos podem ser criados e destruídos do programa, e podem ser criados vários objetos com a mesma estrutura, se eles forem da mesma classe. Objeto é uma instância da classe, ou seja, a classe é uma forma para o objeto. Tratando de um bolo, a classe é a forma do bolo e o bolo é um objeto que pode ser de chocolate, laranja ou do que quer que você queira, e cada bolo que é feito é um novo objeto. -
+

Métodos: Os metódos estão dentro de uma classe e fazem parte dos objetos. Métodos são subrotinas que tem como estrutura o modificador, o tipo de retorno e a lista de parâmetros. Os métodos são responsáveis por executar mudanças nos valores dos atributos apenas com a chamada do mesmo, não sendo necessário que a main repita várias vezes o mesmo passo. -
+

Atributos: Atributos nada mais são do que as variáveis contidas em uma classe ou em um objeto. Como são variáveis esses valores podem ser alterados sem preocupações. -
+

Método construtor padrão: O construtor padrão também é uma subrotina, porém é uma subrotina especial, com o papel de alocar memória para o objeto e inicializar os atributos, retornando a referência para o objeto. Toda classe tem um contrutor padrão assim que ela é criada, mesmo se o programador não declarar ela o sistema irá providenciar um método construtor padrão.

**Questão 2:** From c9aed088cf61ff7e43f441e920009594c262fc05 Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 16:58:11 -0300 Subject: [PATCH 23/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 3dc4197..00c9782 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -13,15 +13,34 @@ 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 classe contém atributos e métodos, que são responsáveis por descrever objetos ou mais precisamente para criar objetos. Ela é um tipo de fábrica para a construção de objetos. * objeto + +Objetos podem ser criados e destruídos do programa, e podem ser criados vários objetos com a mesma estrutura, se eles forem da mesma classe. Objeto é uma instância da classe, ou seja, a classe é uma forma para o objeto. Tratando de um bolo, a classe é a forma do bolo e o bolo é um objeto que pode ser de chocolate, laranja ou do que quer que você queira, e cada bolo que é feito é um novo objeto. * elementos de classe + +Os elementos de uma classe são os atributos e métodos que cada classe possui. + * atributos + +Atributos nada mais são do que as variáveis contidas em uma classe ou em um objeto. Como são variáveis esses valores podem ser alterados sem preocupações. * métodos + +Os metódos estão dentro de uma classe e fazem parte dos objetos. Métodos são subrotinas que tem como estrutura o modificador, o tipo de retorno e a lista de parâmetros. Métodos são responsáveis por executar mudanças nos valores dos atributos dos objetos apenas com a chamada do mesmo, não sendo necessário que a main repita várias vezes o mesmo passo. * método construtor padrão + +O construtor padrão também é uma subrotina, porém é uma subrotina especial, com o papel de alocar memória para o objeto e inicializar os atributos, retornando a referência para o objeto. Toda classe tem um contrutor padrão assim que ela é criada, mesmo se o programador não declarar ela o sistema irá providenciar um método construtor padrão. * método construtor alternativo + +O método construtor alternativo, assim, como o padrão, também aloca um espaço na memória para o objeto, a diferença é que a inicialização dos atributos é feita de acordo com uma passagem de parâmetros. Diferente do método padrão, esse método pode atribuir quaisquer valores para os diversos atributos do objeto, bastanto apenas que sejam passados esses valores como parâmetro na chamado do método alternativo. * estado de um objeto + +Ao conjunto de valores que os atributos de um objeto armazena em um instante, dá-se o nome de estado do objeto * retenção de estado +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. +

Classe: A classe contém atributos e métodos, que são responsáveis por descrever objetos ou mais precisamente para criar objetos. Ela é um tipo de fábrica para a construção de objetos.

From c96a84a0d4535f7e64d143166c1624118f7c21ef Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 17:08:44 -0300 Subject: [PATCH 24/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 00c9782..6fafc9f 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -14,23 +14,23 @@ 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 classe contém atributos e métodos, que são responsáveis por descrever objetos ou mais precisamente para criar objetos. Ela é um tipo de fábrica para a construção de objetos. +A classe é uma entidade que contém atributos e métodos, que são responsáveis por descrever objetos ou mais precisamente para criar objetos. Ela é um tipo de fábrica para a construção de objetos. * objeto -Objetos podem ser criados e destruídos do programa, e podem ser criados vários objetos com a mesma estrutura, se eles forem da mesma classe. Objeto é uma instância da classe, ou seja, a classe é uma forma para o objeto. Tratando de um bolo, a classe é a forma do bolo e o bolo é um objeto que pode ser de chocolate, laranja ou do que quer que você queira, e cada bolo que é feito é um novo objeto. +Objetos são invocações das classes, são eles que dão vida à classe. Objeto é uma instância da classe, ou seja, a classe é uma forma para o objeto. Tratando de um bolo, a classe é a forma do bolo e o bolo é um objeto que pode ser de chocolate, laranja ou do que quer que você queira, e cada bolo que é feito é um novo objeto. * elementos de classe Os elementos de uma classe são os atributos e métodos que cada classe possui. * atributos -Atributos nada mais são do que as variáveis contidas em uma classe ou em um objeto. Como são variáveis esses valores podem ser alterados sem preocupações. +Atributos nada mais são do que as variáveis contidas em uma classe ou em um objeto. São as principais característica de um objeto quando eu o instancio através de uma classe. Por exemplo, a classe Aluno tem como objetos instanciados Pedro e Matheus, ambos possuem uma matrícula, nota, quantidade de faltas, etc. Cada uma dessas características são chamadas de atributos. * métodos -Os metódos estão dentro de uma classe e fazem parte dos objetos. Métodos são subrotinas que tem como estrutura o modificador, o tipo de retorno e a lista de parâmetros. Métodos são responsáveis por executar mudanças nos valores dos atributos dos objetos apenas com a chamada do mesmo, não sendo necessário que a main repita várias vezes o mesmo passo. +Métodos são subrotinas que tem como estrutura o modificador, o tipo de retorno e a lista de parâmetros. Métodos são responsáveis por executar mudanças nos valores dos atributos dos objetos apenas com a chamada do mesmo, não sendo necessário que a main repita várias vezes o mesmo passo. Esses métodos estão presentes em cada classe e seus objetos herdam esses métodos, podendo ser ilimitados. * método construtor padrão -O construtor padrão também é uma subrotina, porém é uma subrotina especial, com o papel de alocar memória para o objeto e inicializar os atributos, retornando a referência para o objeto. Toda classe tem um contrutor padrão assim que ela é criada, mesmo se o programador não declarar ela o sistema irá providenciar um método construtor padrão. +O construtor padrão também é uma subrotina, porém é uma subrotina especial, com o papel de alocar memória para o objeto e inicializar os atributos, retornando a referência para o objeto. Toda classe tem um construtor padrão assim que ela é criada, mesmo se o programador não declarar ela o sistema irá providenciar um método construtor padrão. * método construtor alternativo O método construtor alternativo, assim, como o padrão, também aloca um espaço na memória para o objeto, a diferença é que a inicialização dos atributos é feita de acordo com uma passagem de parâmetros. Diferente do método padrão, esse método pode atribuir quaisquer valores para os diversos atributos do objeto, bastanto apenas que sejam passados esses valores como parâmetro na chamado do método alternativo. From 2fc8501cd182db07279fa9a36d5f4dcf6a8a53e6 Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 17:09:58 -0300 Subject: [PATCH 25/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 6fafc9f..f10f9f0 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -41,17 +41,6 @@ Ao conjunto de valores que os atributos de um objeto armazena em um instante, d 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. -

-Classe: A classe contém atributos e métodos, que são responsáveis por descrever objetos ou mais precisamente para criar objetos. Ela é um tipo de fábrica para a construção de objetos. -

-Objetos: Objetos podem ser criados e destruídos do programa, e podem ser criados vários objetos com a mesma estrutura, se eles forem da mesma classe. Objeto é uma instância da classe, ou seja, a classe é uma forma para o objeto. Tratando de um bolo, a classe é a forma do bolo e o bolo é um objeto que pode ser de chocolate, laranja ou do que quer que você queira, e cada bolo que é feito é um novo objeto. -

-Métodos: Os metódos estão dentro de uma classe e fazem parte dos objetos. Métodos são subrotinas que tem como estrutura o modificador, o tipo de retorno e a lista de parâmetros. Os métodos são responsáveis por executar mudanças nos valores dos atributos apenas com a chamada do mesmo, não sendo necessário que a main repita várias vezes o mesmo passo. -

-Atributos: Atributos nada mais são do que as variáveis contidas em uma classe ou em um objeto. Como são variáveis esses valores podem ser alterados sem preocupações. -

-Método construtor padrão: O construtor padrão também é uma subrotina, porém é uma subrotina especial, com o papel de alocar memória para o objeto e inicializar os atributos, retornando a referência para o objeto. Toda classe tem um contrutor padrão assim que ela é criada, mesmo se o programador não declarar ela o sistema irá providenciar um método construtor padrão. -

**Questão 2:**

a) Falso. Dois objetos podem sim ter o mesmo estador, porém não necesariamente as suas referências serão iguais From a6377ccdabc765c10f35fb6b4c6c4e412645bdb0 Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 17:11:36 -0300 Subject: [PATCH 26/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index f10f9f0..25e00e5 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -42,17 +42,23 @@ Ao conjunto de valores que os atributos de um objeto armazena em um instante, d 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. **Questão 2:** -

-a) Falso. Dois objetos podem sim ter o mesmo estador, porém não necesariamente as suas referências serão iguais - -b) Falso. Você pode ter mais de um método construtor padrão em sua classe - -c) Verdadeiro. A retenção de estado é a propriedade que permite aos objetivo guardarem os seus respectivos estados, porém não tenho como afirmar se existe outros paradigmas com a retenção de estado. - -d) Falso. Também serve para acessar os atributos. - -e) Falso. Não existem métodos destrutores em java. O que existe é o método finalize que é responsável por realizar as últimas operações antes do garbage collector eliminar o objeto da memória. -

+a)F + "Dois objetos instanciados através do método construtor padrão terão o mesmo estado, entretanto, suas referências não serão iguais." + Os objetos serem estanciados através do mesmo método construtor apenas implica em terem o mesmo estado, mas não em referenciarem o mesmo objeto. + + b)F + "Uma classe pode ter vários métodos construtores alternativos para instanciação de seus objetos." + Uma Classe pode ter quantos métodos construtores alternativos quiser. + + c)V + "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)F + "Em Java, o operador .(ponto) serve para acessar os métodos e os atributos de um objeto". + A sentença é auto explicativa. + + e)F + "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 não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo." **Questão 3:**   ```java From 895da067d21c6245fe242bcd9307e61d85f5f8f7 Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 17:12:23 -0300 Subject: [PATCH 27/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 25e00e5..f7cd6ff 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -43,22 +43,22 @@ Retenção de estados é uma propriedade do paradigma OO que permite aos objetos **Questão 2:** a)F - "Dois objetos instanciados através do método construtor padrão terão o mesmo estado, entretanto, suas referências não serão iguais." - Os objetos serem estanciados através do mesmo método construtor apenas implica em terem o mesmo estado, mas não em referenciarem o mesmo objeto. - - b)F - "Uma classe pode ter vários métodos construtores alternativos para instanciação de seus objetos." - Uma Classe pode ter quantos métodos construtores alternativos quiser. +"Dois objetos instanciados através do método construtor padrão terão o mesmo estado, entretanto, suas referências não serão iguais." +Os objetos serem estanciados através do mesmo método construtor apenas implica em terem o mesmo estado, mas não em referenciarem o mesmo objeto. + +b)F +"Uma classe pode ter vários métodos construtores alternativos para instanciação de seus objetos." +Uma Classe pode ter quantos métodos construtores alternativos quiser. - c)V - "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." +c)V +"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)F - "Em Java, o operador .(ponto) serve para acessar os métodos e os atributos de um objeto". - A sentença é auto explicativa. +d)F +"Em Java, o operador .(ponto) serve para acessar os métodos e os atributos de um objeto". +A sentença é auto explicativa. - e)F - "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 não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo." +e)F +"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 não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo." **Questão 3:**   ```java From ec9ccf62184b41e9c404f7435721fa181bbd4e76 Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 17:13:37 -0300 Subject: [PATCH 28/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index f7cd6ff..34f9378 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -42,23 +42,23 @@ Ao conjunto de valores que os atributos de um objeto armazena em um instante, d 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. **Questão 2:** -a)F -"Dois objetos instanciados através do método construtor padrão terão o mesmo estado, entretanto, suas referências não serão iguais." +a)*F*. + "Dois objetos instanciados através do método construtor padrão terão o mesmo estado, entretanto, suas referências não serão iguais." Os objetos serem estanciados através do mesmo método construtor apenas implica em terem o mesmo estado, mas não em referenciarem o mesmo objeto. -b)F -"Uma classe pode ter vários métodos construtores alternativos para instanciação de seus objetos." +b)*F*. + "Uma classe pode ter vários métodos construtores alternativos para instanciação de seus objetos." Uma Classe pode ter quantos métodos construtores alternativos quiser. -c)V -"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." +c)*V*. + "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)F -"Em Java, o operador .(ponto) serve para acessar os métodos e os atributos de um objeto". +d)*F*. + "Em Java, o operador .(ponto) serve para acessar os métodos e os atributos de um objeto". A sentença é auto explicativa. -e)F -"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 não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo." +e)*F*. + "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 não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo." **Questão 3:**   ```java From b668441fd83fb1dd78b1805519ff8d594f70ed28 Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 17:17:23 -0300 Subject: [PATCH 29/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 34f9378..e47b577 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -42,24 +42,25 @@ Ao conjunto de valores que os atributos de um objeto armazena em um instante, d 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. **Questão 2:** -a)*F*. +
+a)**F**. "Dois objetos instanciados através do método construtor padrão terão o mesmo estado, entretanto, suas referências não serão iguais." Os objetos serem estanciados através do mesmo método construtor apenas implica em terem o mesmo estado, mas não em referenciarem o mesmo objeto. -b)*F*. +b)**F**. "Uma classe pode ter vários métodos construtores alternativos para instanciação de seus objetos." Uma Classe pode ter quantos métodos construtores alternativos quiser. -c)*V*. +c)**V**. "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)*F*. +d)**F**. "Em Java, o operador .(ponto) serve para acessar os métodos e os atributos de um objeto". A sentença é auto explicativa. -e)*F*. +e)**F**. "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 não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo." - +
**Questão 3:**   ```java /////////////////////////////////////////////////////////////////////////////////////////////////////// From f7db589a6a6aec6da11615e63138ec5914542509 Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 17:20:50 -0300 Subject: [PATCH 30/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index e47b577..5c48f4f 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -12,6 +12,7 @@ Atividade para realizar em dupla e entregar via GitHub. Uma entrega por dupla. 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 classe é uma entidade que contém atributos e métodos, que são responsáveis por descrever objetos ou mais precisamente para criar objetos. Ela é um tipo de fábrica para a construção de objetos. @@ -40,27 +41,27 @@ Ao conjunto de valores que os atributos de um objeto armazena em um instante, d * retenção de estado 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. - +

**Questão 2:** -
+

a)**F**. - "Dois objetos instanciados através do método construtor padrão terão o mesmo estado, entretanto, suas referências não serão iguais." + "Dois objetos instanciados através do método construtor padrão terão o mesmo estado, entretanto, suas referências não serão iguais."
Os objetos serem estanciados através do mesmo método construtor apenas implica em terem o mesmo estado, mas não em referenciarem o mesmo objeto. b)**F**. - "Uma classe pode ter vários métodos construtores alternativos para instanciação de seus objetos." + "Uma classe pode ter vários métodos construtores alternativos para instanciação de seus objetos."
Uma Classe pode ter quantos métodos construtores alternativos quiser. c)**V**. "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)**F**. - "Em Java, o operador .(ponto) serve para acessar os métodos e os atributos de um objeto". -A sentença é auto explicativa. + "Em Java, o operador .(ponto) serve para acessar os métodos e os atributos de um objeto".
+Serve para acessar ambos, atributo e método. e)**F**. - "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 não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo." -
+Em Java não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo. +

**Questão 3:**   ```java /////////////////////////////////////////////////////////////////////////////////////////////////////// From f46c6d418a5e5b998d76e3d7e1deec83e4219667 Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 17:30:35 -0300 Subject: [PATCH 31/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 31 ++++++++++++---------------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 5c48f4f..5345d3c 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -83,6 +83,17 @@ public class Drone { public Drone(){}; + public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d){ + marca = m; + modelo = model; + n_de_helices = n_hel; + camera = cam; + vel_vert_max = vel_vert; + vel_hor_max = vel_hor; + autonomia_bateria = auton; + distancia_max = d; + } + public void aumentar_vel_vertical(){ if(vel_vert
+

*a)*
Errado! a1 e a2 nem se quer são referências, são atributos da classe Questao6

@@ -477,10 +476,6 @@ True
False


- - - - **Questão 7:**

Nome: André
Curso: &c1
Data de nascimento: 23/2/1983

From 1a581f94a6f133ef52de05bb6ebcafa14cdd5f9b Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 17:36:54 -0300 Subject: [PATCH 32/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 5345d3c..c5ca5bb 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -461,11 +461,11 @@ Errado! a1 e a2 nem se quer são referências, são atributos da classe Questao6
*b)*
Estados de q1:
-a1= 0 a2 = 0 a3 = Null a4 = False
+a1= 0 a2 = 0.0 a3 = null a4 = false
Estados de q2:
-a1= 0 a2 = 0 a3 = Null a4 = False
+a1= 0 a2 = 0.0 a3 = null a4 = false
Estados de q3:
-a1= 1 a2 = 1.0 a3 = null(A palavra null de fato) a4 = False
+a1= 1 a2 = 1.0 a3 = "null" a4 = false

*c)*
False
From 64051b0ed63d6b151aea6f16d51405ee2ef81d3b Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 18:03:16 -0300 Subject: [PATCH 33/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 121 +++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index c5ca5bb..1a58569 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -531,6 +531,127 @@ public class Principal { **Questão 10:** +

+a)
+```java +package questão.pkg10; + + +public class Turma { + + int codTurma; + int numVagasTotal; + int numVagasLivres; + int numVagasOcupadas; + String diasOcorrencia; + String horariosOcorrencia; + Disciplina disc; + + Turma(){ + + } + + Turma(int c, int nT, String d, String h, Disciplina D){ + codTurma = c; + numVagasTotal = nT; + diasOcorrencia = d; + horariosOcorrencia = h; + disc = D; + numVagasOcupadas = 0; + numVagasLivres = numVagasTotal; + } + + public void Matricula(){ + if(numVagasLivres > numVagasOcupadas){ + numVagasLivres--; + numVagasOcupadas++; + } + } + + public String obterDetalhes(){ + String resposta = ""; + resposta += "Turma " + codTurma + " da disciplina de " + disc.nome + '\n'; + resposta += "Numero total de vagas: " + numVagasTotal + '\n'; + resposta += "Numero de vagas livres: " + numVagasLivres + '\n'; + resposta += "Numero de vagas ocupadas: " + numVagasOcupadas + '\n'; + resposta += "Dias de ocorrencias: " + diasOcorrencia + '\n'; + resposta += "Horarios de ocorrencia: " + horariosOcorrencia + '\n'; + + return resposta; + } +} +``` +
+b)
+```java +package questão.pkg10; + + +public class Questão10 { + public static void main(String[] args) { + Curso c1; + Disciplina d1,d2; + Turma t1, t2; + + String resposta; + + c1 = new Curso(1, "Engenharia de Software", 240); + + d1 = new Disciplina(1,4, "Orientação a Objetos","FGA", c1); + d2 = new Disciplina(2,4, "Desenvolvimento Avançado de Software","FGA", c1); + + t1 = new Turma(1, 46, "Quartas e Sextas", "12:00 - 16:00", d1); + t2 = new Turma(1, 30, "Quartas e Sextas", "16:00 - 18:00", d2); + + resposta = t1.obterDetalhes(); + System.out.println(resposta); + + resposta = t2.obterDetalhes(); + System.out.println(resposta); + + } + +} +``` +
+c)O código usado aqui é o mesmo do item anterior, pois, para haver uma Turma, precisa de uma Disciplina relacionada à esta Turma. E do mesmo modo, se precisa de um Curso relacionado à disciplina. Assim, não haveria como instanciar um objeto do tipo Turma sem que antes houvesse um do tipo Disciplina e do tipo Curso. Logo, ambos os itens geram a mesma resposta. +
+ +d)
+```java +package questão.pkg10; + +public class Questão10 { + public static void main(String[] args) { + Curso c1,c2; + Disciplina d1,d2; + Turma t1, t2; + Aluno a1, a2, a3; + + String resposta; + + c1 = new Curso(1, "Engenharia de Software", 240); + c2 = new Curso(2, "Engenharia Eletrônica", 257); + + d1 = new Disciplina(1,4, "Orientação a Objetos","FGA", c1); + d2 = new Disciplina(2,4, "Desenvolvimento Avançado de Software","FGA", c1); + + t1 = new Turma(1, 46, "Quartas e Sextas", "12:00 - 16:00", d1); + t2 = new Turma(1, 30, "Quartas e Sextas", "16:00 - 18:00", d2); + + a1 = new Aluno("Andre", c1, 13, 23, 02, 1983); + a2 = new Aluno("Maria", c2, 5, 27, 5, 1994); + a3 = new Aluno("Junior", c1, 70, 16, 11, 1995); + + /* Aqui as vagas das turmas estão sendo diminuidas, logo, os alunos estão sendo matriculados */ + a1.Matricula(t1); + a2.Matricula(t1); + a3.Matricula(t2); + + + } +} +``` ## Referências: From c556e60499188ef609cae7c19dfee350f5b52dd9 Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 18:05:18 -0300 Subject: [PATCH 34/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 1a58569..5f7fc7e 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -653,7 +653,6 @@ public class Questão10 { } ``` - ## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From f43fa8b84f1659d2a9bd16fa1dc29fb6385f0422 Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 18:07:05 -0300 Subject: [PATCH 35/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 5f7fc7e..969d12a 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -613,11 +613,13 @@ public class Questão10 { } ``` +
c)O código usado aqui é o mesmo do item anterior, pois, para haver uma Turma, precisa de uma Disciplina relacionada à esta Turma. E do mesmo modo, se precisa de um Curso relacionado à disciplina. Assim, não haveria como instanciar um objeto do tipo Turma sem que antes houvesse um do tipo Disciplina e do tipo Curso. Logo, ambos os itens geram a mesma resposta.
d)
+ ```java package questão.pkg10; From a236daf12c5f5c8d13853c6c5dbdc9e636c82c48 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 18:07:57 -0300 Subject: [PATCH 36/65] tentativa --- lectures/oo/exercicio2/atividade2.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 969d12a..502de5c 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -580,10 +580,14 @@ public class Turma { return resposta; } } + ``` +
b)
+ ```java + package questão.pkg10; @@ -612,6 +616,7 @@ public class Questão10 { } } + ```
@@ -653,6 +658,7 @@ public class Questão10 { } } + ``` ## Referências: From c57e808d84d59abd3b3c445fa9d6064662a7460d Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 18:08:59 -0300 Subject: [PATCH 37/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 502de5c..75f60ec 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -620,9 +620,10 @@ public class Questão10 { ```
+
c)O código usado aqui é o mesmo do item anterior, pois, para haver uma Turma, precisa de uma Disciplina relacionada à esta Turma. E do mesmo modo, se precisa de um Curso relacionado à disciplina. Assim, não haveria como instanciar um objeto do tipo Turma sem que antes houvesse um do tipo Disciplina e do tipo Curso. Logo, ambos os itens geram a mesma resposta.
- +
d)
```java From 4ad96ec34b6c28aae0b766ca1aef3b5fd2daeb7b Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 21:09:41 -0300 Subject: [PATCH 38/65] =?UTF-8?q?Diagrama=20de=20Classe=20da=20quest=C3=A3?= =?UTF-8?q?o=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Captura de tela de 2017-04-10 15-06-07.png | Bin 0 -> 34520 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 lectures/oo/exercicio2/Captura de tela de 2017-04-10 15-06-07.png diff --git a/lectures/oo/exercicio2/Captura de tela de 2017-04-10 15-06-07.png b/lectures/oo/exercicio2/Captura de tela de 2017-04-10 15-06-07.png new file mode 100644 index 0000000000000000000000000000000000000000..13634fdc9f3abc0e2bcbcda082c7ab5297c28de0 GIT binary patch literal 34520 zcmZ6y1yCDb*e?u}Vuj+x-CbJTic4`TE`>lT1PiXk-QA13LvScw+%>p6!5wb??|tvg zH{VXyGAEm}yYoEf`N;`WRhGp-BSwRRgTs)QlTwH6C*a`VD^QSNM;^&n6tEp4NJ3r{ z1-5vhn1{m7QSIe)L2z&%`~F+ulUP2Iz`i7MlGbt3u(NP-HFX5QS=!nG0c;>MM*zSU z^wZAi{9TtQ92_N_yp*`6TjoiJXC_&{`~FL1=a}5*#Yh~BP!U{x$$6B3z$i-WMU*;} z!Jg{4p~pt9y&vd=oP;z~h$v?8Thz3E=ImQOkQ+J^OYeR+U@g};JAE}BFY#t0o~$HJ z6q$?*AA^zcG{0a@^^{E4F= zP8b}h*4JbfFzU1~-h<=bz(mhs3+ ze=GzDm{DOH&D2lzcaLUH6p66APgw&o7~lt-9cg2a2ebXyr zGT1QI@0|w}ZxbW!4+_wFWh0Cll{$M4Ll#f^t9$YnB6WoVb)BK&+Re~BMlxs-xKgc> zv5+=WB9V2Vhd18Cb#gXDKZ+BD%k9Mwp6I-tIlvV?l34f;a%}gh7Cc?jt1&#OwgOcW zx6`2rwt_<97uR|?^d}o!iH+8(?lCRY!CKYSx1r>}pevD>UvxGQ879CrQiwyq;LydN z%DI16sx@ED3bIuCczW<6R zzfI7HiYK^J$oP&ioSM29GN1O#Z1}$D(u+`mDNl|%@ayoi@q)W+CTBQY;dZs7*FUtN zcr5ue$fJsaJfY0v72AX*(jf`;#BGuSRbfwE1?dRB2WOerqrb-GOHq^)oaNE*1tFc-g2vMcgm1#pIc=xY zO7+s)W`sWeX^kM0iH$Z1ft4D2uM^AJhJ@;pG+xl39_8w84!k7|9H*j92AD!zs)|np zppPWvX>#@GDJ3PbsdJcM?x-0Grt(o0+wN%4s;R?ROv&NPTHFtVp=xn4&G$JdI(KW+cnQh?C+vq2wayPistL&>#$ z5q7j}S)?!v6WKNwn#Wud(iNO6`c0Nw~{6y&C;ZdZi zEt&mto?@i@=6yxb^|uyep;B7cK{W+r>6z!ilf0*ipgu97t6?ptdwty(d(mL;JeWE3 zecNs76xppyzpbjLSzi+RP)Ld5za>Q&h;1s~1Im*F6)LWE3{#`$Cp#2=^1gpF-5Yg9 zsJRFtAS5HnP#1vRa`yrf{DJ664U^V1W8$>wm9#)(N^KyJOR#_%rKcxwUyd%UXFja^ zdFk*293cs0?C*S~26KLHcLHl&(IapXFOc(5vjqX+58&_mnf`2&46>3&wYea&hdgjabNrfzxAJ5G- zDu@b-?R9T0Za1o@A5Oa7Gv`aFd+VgKakLrd%x#r{*KHNaxF$YrgrET$f9{7^1ioES#p!`idb--@RSt;}vj%skR*!oJdI~ zoHbDM;wcJ}nws2Easj?xVu~b1$x&;NrfJQf8=J4LD83vwC~?>cp(J+gn%d~U?5?H< zZUZ`@yD8F$nvydA0_$>pEg?tB|4lgm8P1N z+4ewtalz{FP2xF&b%K^z(*c-1|Rv1ekkxt>>DL4hs|a41MR zSaqlm5HW2XGX~-YQi-c}F6{VxIW_ExvVrtCke=wIGne1(yW4tHr;oG6DLgS0N|f8l zN2lMMU8kKba-}M3ixc7$^0sm;gYicYrD}I{_QuR~5vXtw;*)qCU1sSp`NKTMMPql6 zZf>+6#I=CCdY`OB=6GA{bx@d(E3Vlzw8`Apeq|gb991ZRg&{a7KSjv{9rg{y6kDs%8U2ejq=>Rbk0j)C67?`o5<7a zmc$VS`iMRm9qoQrTZs0F=Yvlm7JoF^2e4#bMp1QbEn8)eCeRG^!vu&y>eTXFE7Xxg z-X@SNMQsWR!4#F$CXkMKjd5uZma>u`O;G(t7tKxkeM8)!vmb)wT)LP^u^&N7SQF!G zQusKKPm8yGT?{q@dXv0HN*G@jD#^A1x}UPYdoCq6mcF8wT5ivV(OEZSvj$@EK#)pE z>XR1{O#_bw@dGBDf7z{np!#{$E_kE4Yz~<(-)`F0nbkx4Ky|cu(Db!(5j@2Ga_B+- zSosvHQBUzxplUe*(6O%yOz_gxyz37~wTbtr^X@Cb2%sf#QF96EDd7+QqV{a1fd|Or z)TaOC3>k;zJCk1|NP8IB2&X7R2uv?nzSRWp6%=-S{sm{L(iBOoeOBoG>T9R+JpKir z+EUx1+*DV4M99ntt7kZHKXqvU7I=Sli-+BNTv$~tMrdH!>cb$rOr8N8giA~e7PrM7 z0X2GT6Poomi>6ubXIJ82>(tdP-ORXA&yl(MWI3vt5 zUKyg_RTJX3Jj9$oeJrzx_uWFBu*mK#m(;r(}Xz$6488^FsARr_aO5EmXNx-K#>^Dnf zQ>ofKv+L@y-T4J3Cjt=O+eWpdZ~SyQ}_v!E9 zw!)AfRz~@ju4gr#dqSqhj$1BB0!V$27w##HJL7aA6x+$w=t|dGWTU}Ze32ekv<&Cc z_vQgoTu$qvEYXj?V*hHr$%V+5MhQO)9MjYv+LG)yV0J~w8n2GWAbUs0tWyvAn2UzE zdXNe=kr;UC5pdjL^ zoqy>hH(Gz@?sc+%tf;!@U?(H<)O{`xYb#LtY}#u|zu@&?Bs!_}a>uPlS2D$nXA0^q znO8)Rim?BI83jo7F|%jUN8-KOuCBIN%J1?|%h_1boqIQsZ}(~-=oV$!*%%cUx8Szf z=8JsBmANLgv~hWm=1I$5eX$Y|(9ZSDeaEglOhyu7ZDg2ufRIXv0i=dKfZrcSY67)F z(-^{?I!RpP$#QdxZ7qo4LZ-#ue#{%!hW7d$Db}o2MCgKs7+t+?^w=Mfn(f}qL_3at zDIa9I0Y7Dds`qYV*2c49e6m%9k6`atV1?5zZ$2BQ$h z{&le`EtS|J*WMI`lU8bu2Jd206!5L^Q;b~S=^M`xBfV|6obzfWtJ!7KlCI6B6%i-X zsakkH%u7qiGor<-<^_--VMw6(ZMP!XDQowDPf@+-K)J4v@XuUn=f!FP$c&L+aIk!p z@p{*(AJF;zEO^oYg{s3?^_e}T^=^gO62`QXYFKm1e+MY3(VXFEGgKNk znF#l21qE^mEr!aUC3aDDmEuZj{}}|011i#~5koUal)NTzO-tTM_A(CN1jsd6BMPvm z;zqSFMyhK2*tsw{x8x?B>r;mpbh=_|m8_hQAgZwn;#eel;Cz9IWm<>|#ZNGM^OvB| zgk@dnOY~7=yZd}(Dn#~N%h8cwG;|r?mEo3<0&GSLV;zIBhEPf`NshQ}zmMPubot>c zSj~~AZ42rkXQBm8PE`DWet96xvZzzB)H2SK%hgQvygkx3@74Z|uk(xJy&nf;NhOR%~P_ET#E#-1Eg{Nx}GgfmSmXVJ#^7W!#7*%p3lma=j< z*zki8QUEPZ|^&Cj<7A;Dz>b>n;_Ogu>* zI`OI0wEl}^2^&$uh3vYYAqDR*c;dL(dmhoZexANef?r-f7u#6RZpb@|ehLERxdw*U zqHq}Sp13VE&LwDA4$j7KM3M-{MWWF(Wwg78b7nAn!Rbx0U`mX4I7n#uNW$aR(DSXY z+|~HszA@=)n>hY6@L0fiNM`Nl^`jqz-*ZUC%?#qf-g*c~ubdhdh;J?|Q8=&`WQ7dW zvE?JTsgWQFT2-{I%Qo;G{~|YDYR@v$|5~Il zyC$+yGlRHW>|zoU5?l0T4f2#%ZQMtz`Ml1xxp|nh=Vf-zu0!~rN*{z>CTx5z{{13f z7Df;y?fgl^B08N@bWw7f?|Th6>o~PS^1>W=zPx$0s1mueQucLod^vcD+PRwE`3S@F zIX#u`S8n7d#HQnA0E1b9;ct9~qxJe68-cjiG1*gNF_*h>F?E}p?@76DnK8Zgd=WM< zZ8pwM8R}nO-;bIkvfX)QH4@+MI5NZ2fc*bWvSG?)fo{jkLf-j);*Vdxymj2vgKb?XHL64xm(ooWAO~o4XA^yZ2t7DDGI3%p0ToU_ z=c(FtUldc~CtoG^CNjsZ|3ddp(J?$n^K*L@poL%r-4H_>8#73zmY{{Z}#Cz0MIQA zjF7cVvC5J2V5rCca;N=u7^U#9XHYsuu@!wyF=$0CRdkUXkB6Pi% z6ovnS3wIDs!0dapE!0Z^enLsc&DzRiXyd2 zFrFzFlQ$vZcIV;1vViAfAeMu$Noe?auk-NoxGsqtBAv9-di*|iV4N~*kiz@B84qs1 z^yuvZge0|k_#aW=+3%f3fAgIl^*d? zq(EFNvWWX-#2fQ*^<zgx6$vJLOB6*+pHKUx z*h8_1`qRZJh8JjZ-`MDpTkIJ?VkdN~IsSN3%s=j%M3#>ReOM*2<0N0V#v2MpVJrQ2 zUrFC!b=h?i$WoZ?hI3dD&a1WSQHRN5{q6ut8rPt*6mrsIAn$FUTAy8Fpb|75IPK3l z1p2q8g0qo^=uXe8E(60fke5=Q?m*xX^E!7mt!{B;?n+Zad&QDyyoiS4OE6l-FfZG} z_HXhyppihS<}HZ^gES6)7n8Iwi-4l_9kWe?PTSu)gJlTh=foF3ENbu1=D?2vuQ=nL zuP#*&C$5KwS@OPbxnD#1_Hn8N9C)m&T97a)x?HLFyxjDb_^6ogrNjr27o30Azwfy? za66|naCrW8cE6&v>o_hPXa%{k)%BNr+d->Zb`omxzLjl0zzB$F{d?RRSjbSdmkk(E zf7-QldnPx0J~jM)Whe-R9t!W)XMU0V-IbJ-A~tr2=^ZxHMh`Cio&-<*FjmJ3L!hzh z#tC%9V0U%}0bH9vtOkI~RNalDt%guo>b?LYU;%7ZZWyyS$ZyrGe(Q7eu-9rEv>|iz z;&#@D@ota_6kG?O<89<6s^e8r%Q+JVYZnsATNqJQ z7yu&mq=Ua%jD{`Mc*8O!lFUR)>+8pD+Mn-gW)mP4duu;?Z4 z&GDv}RWjXZK=Uxf`mvPVZFvj8qawL|B@q_+pws!Q+lXT(-TujF+{aJhxl(lWcxw?C zW4Sn5EwPz5wBD2j9-Q_L89kD-1|!?5%yj9K#HZ~^F4PGwQ8P{S5pa}6oWCCoG;smB zNg+k=(ZFot*u5ad5H-KtSk@lQ27;*EIGe?yKXRQCTy>_f5iY*B>c{RrQ*bqR!e$v}A%4h&BAWKWm^c3gb zQA(1MCxl0P?OG%Jjb@?emHK0R$lYe>j~pib&R1y{M|$JF1p(U~r;*tXG<+P;dtJ8Z zC}YSg^yOb6lY(sEv&xZv6mdv@bQ#^of%H=>_g|>2jg%U4wmyKOYYLZOhx<+eDEipy& zX=oHfNr3Q~{0!Dyf`#-k_}v!$alPMkK;O0>wEYHo#sqUUTpy&f*Wq= z-vFCspjPZ3!F{7{t@_t=5{~xB2zJAX$!8FMX?gYwk`eLRFk4F1#vn~)SBQ-^V8&Dz zVZr%BEf(^Y`IN<=0CE35ymuYzV#;cAm_fSsg}c+gh_$+L+{%qB+KQp}&#q136EkIz zAool6$n@ZXM5!lM)V8tBgwQ3oX{a-0aO44Ylr2Wz#`ZEy1;T*! z@YqVuV0V_m=L>zRc&US+;>5}!B(ec&d=K7&KikmZDiLmLA(C~O-mZ7&3#I<3KIXNmS*gKU06bw=t24C;HaSK_;1P>9!9$W zOTQ>G3F-KA{wj;%$2hexXP?3mhO1T78gHZ0Q!g!>_6}5kY!k3EW*eze4IILdcM%q6 zK5sae*3%i5;BddZ`i>HmxV$6`;TzJvF8%DMUbu@MO47t(5vO=u{$fjfIYd7rhR3*kI7AEQYYr^p8d) z9&KOF4?wT7G}4DzaM2Uwdc%tM(CTw)Dh9-I#Bg6J-Ii7!ciKxL-di@V&NQHhBeHt8 z&y>Cma_uT!FRzjzy;)~Uz<45!;>Ro(=~wfkHa_pleQ#8hUW68ih@pnlD&uze3UT); zkJ*2mYzp0tAh<-nbk6QNR_=T)SN3T2JcN8}jq7ZfU*5f`O#|$Ujt$+d45bO=yzmE6 zr=XG!4s85PLDLZ|SUw0l{H=x)eeUtwvngvdJ%nItkddRZJyVF6d@#L=;eI$naP=R$ zFUg(JJ%Xy(s$4w1xee&_l3dt~*Vya8;`tMz9)YP}=GPH=lE%I)Jn5g1cQW#XO9Fv> z`=m}qS;`h!i@nf@uB{x85NLE}*tqia1k(%IiAlT@&BX>0QHj?%MlDpXV`-0xJm@uVeU50UdI^)yClrNYsKvxIZ%tybL=L(MvLg#ameRikcu$ zu4S?`Ta5p*?Ys_h^YevY$eHh@+AJ2>mo0xd30luDZpxu~#C-4nWmS$>>EGpN;YIDP z_T3L2f7eGVQyMLL|JEU@r#;!%V>uv{=KZNqG(WS|mrM*isyP*?w`_`xj}`NJJ@3VY zLSnpvA4DG1arA<;RsY+l!8X24iHMArY$KRvi1iaYhHQj<(y@VKd2+9xy1(ZmspJu+ zbLz-){L;D94TmyROsUT*Etv;>5~ z!YL|RaZ^Ea!k}9E-w(0sM;HO`PUQkn@+aLIbFS;z!l}(OkG0JG$#9c05r;+#x7PhR z{dL3#6o3WMPZBAXgAxbwp`npHSoDih@tm_!yM4%k%QDu{VW~4Yi$5E)3LLaNN>Ur) zwZv(v8{ik1IP~Iq;c6;9ZW6aE6RB?nq^N470AK92ZD>gH3n8*0*|T+F=2CcJtw22> zu7yh>{d_+2vQ$5+cjM(mpQlo4yTV*aakNsNBCT0Q1@y)I=HKXxj+Qs=lD6wfq@zZX z-5hUYwjn?SfeGJ(gBn~q)s!zsW!9g4^fYvf&0w`dIrnYm!#5!yp**d14yKfv6jmR; z5U&xjI#qG|D-_3}s-M#u(l;SUat_ziWLIE4x!3Sb78Fu#?tw`FS?w1+& z^)}x@sCC!Qf}y4Tt&mHd)xr1wM)DJVf~(G^XOe0kcQO^5B}o#q|1j$FgINC4+?>Iq zIr6!)@6dgS?arQtM0T4c&zraEW*JxNgS@SQ2e;wty5s3!_U3g+XWvut`$G|P5<&El zyD}RR4qPY^B7kIYUJXB)E|glmKdGRe0dw}Q*U8To0zAxC!wN2~&}7TtM8W=jocM6P zgcmJe6hIr;e>c*p+w)DDu%0)Wapd%9=ubtAB~paO`v3C+0NkD)(_}oRM`rV%Qr@UEudG0Jl>LriNzJH+AW-hHVgZO6){o6n^M8VUx z{Z=dH(4D)fF-*sGj(yNX0L2cp_Pe|J>D{8^<6I`z33a+NysP1pkwqv~cKfq-HklVi ziaUAa`}XtCBdNVC6~g>r2Ye z@^#0a{A2!8PGlKg+|kzGb0cdbxsD7fKDXMhPhy$>r0qOiGd-kCg3bb;;O$9C^!xAP z!i1HVi1 zlqE>QWe7}Ijh$*s4^w(@ha^YsCe7K`b-LTOWLMY+17N8=tP72q&s%swhRHL}E;f!wWKlav2@Ly{JVTZf^nl1h zLVzo*Z2n_vI0^8_uAMDe-f0Plf3&uC-GeoyT3GvSK50Nwwqt}Gv*x@?^%EGdGYEFmsR_;eyBx0M*IEThkDF6-H&e8Bv-4&$aW68R4} zGPR4Vi0sN_q7z_>4R^A`^;^rMI5~wxR-|sl2u+#8{kTIpm*qNZgPBR3>U5P4d2xN< zxt_IqVbuQ`GO~`}R;$->=1TpkHu&OD|21aOB#E(Qs4aRq{haW$e3Rl#-q_5&jG&0X+#p@XTRH7 z!yZ}8@;t)U=<2r?M^OtkC_oLzDg&&{*crNw=aPE<5Oe3Q%|{5rp+im!(!C=64bALc zNZ07)`303@VtVj7b9d4U;tYkp{J|pQwt`UKqhSTZo7Pl^ji>jX`z&PstcQuYU1e&Zj~bGuJucnia+po!kX8CU^gD{5nNZ8_lNAqZu6$hOeCkua znBb3LFidi)EVfDfmXK#;?icniJCXqYsT?R&q++<*Q?jQ>ZK&j)M+vQ%6Yw3lw*;c8FKDLM<^z-L!o)OQzP z;InXb@((eC?iyLGR?enV7{&`)8b82Urx^5)k@$|s%!>_7yj@72={yJvy^I+=)t29z zexzX{`D7>P6bOpDMAg*+F9}t%>15qG4)=Ua_V&f{oo8*2OL4b#=^Q$zNTOUJl38rsO2^Kde@{Wr+IJxhBL|@)!n<4*l?JF8NMy|f&x0oZPB+oMJ zKa_H(GPO!yA*yHWS+3xD>JhoRS6$${pW48BS*O^%r$a@yJQr~3VJw?eO;vZ-BF)hj zubv361yl;WGS4M&k`2lD0cyH59!F8UEK=Pkjr`DJ)w6MN&%=Qp7E!?Ujz zBR+O86*zM4XW3a@>7`Ku>>LqZlydEo{58RsL{x{)Q)>v=sPjkibXsQj}hl5j0TNkTaa692OdN8pE7;Q!y6x0vMwgt7c~C^Qc^i zwEFz%L?h*^gZ-dU&ZM#M73+l0HVK^9S@^_dadCE;)(Jq9Dl!haAdzjcTm6KHgR8QG z47&8XlYjEMh~Mr?p~29=JYhM6+3;0{tn*d#&p)V{qt~~Ct9+D&S`aWqj~M9*jS7)& zeGohXd^(!&9Vf8seE&Pf`#L}KU_Y^GH?MusyQ=v8dBuejNR}BifAOZohrM#)?f|C?2z~dqxL??_rT7-*&+y(oyB0>KG49`nuJG;6zEyv*L zan%ztZ0f3s&tOYqzxwPAo_vVM2ng5|z@Sb8YKoKBL~1g_>m%YZlYkRz%Pnj*0{jvY zziEc-r+yg0`4gG$dz4q9sEMAaWjz*U2O~7xvenp?!cSzv4{KN>Zoykp+IYFZsMK&A zg&xL6Or)3pW%d`}s!s8xAIw=KTn_WPL%S0w)zH}#4!r6NjS(3OG3Awvep_M>q|qv_ zZT#$Ra|pF$H|!qo$EL}E6`Qf&lgzLHo!sLRmbrNPRO@sh@%Uqe)~w!4 z2v=(1rS?>~{t_7-9pm%X_;$M1cYBF_6pmG2p%}ZH3j>PBPqkhb5+2~ny=PfL{x!(> z0TEx_)=pMMGn7g6{@+VWX^{Wk6(gPV(MQScY8+aiHKhOE>Dv~P;X=tn2ZD?m4yD>; znogNmT|~Zi9&IM4wKJOXY8o z>2gtsGH~&%GKj;cz-*WHzwi(W(`Psj(lX=$J&X_^L5cO1Gva^&%abuakP-(%zp9(O zYFt7C9IToL+qg}nw#5>0bp2iQ4`OcsK%Wp(esZvVEHZ?r8%Wn?x zW>?rShYA+9^xh++HKC;Hp~BtP=Y~RH^Rug?#7!fp^RMwrzU82L)cZV`rt^9%a_H+Y z8$amI`C6U6t7U-cR{yZWbS||wlKq=s(iNK$CMSz$2XT7&_GX%`Y(}lLoVgou9KNw~ z;N4}#!xhiW?T-2Q#-Z-tORW!jnr;NLIg`oO z9@u}dyfP5MbTttL*&1+$DBIvK;h$uFT%x-1C>sC%-h16?0@J#byN~H^cre6MyX2(H zvE;3U#pokAlOa4r`0Hd#%CRDuWvc>Cj_EQsWtgq>^aN`I16y8haA?*N`bd(-KLQk(vlQ_=kT~BDWdMH1u-lNIsCZVK{;|Oil$! zbIbn4<8PGvp)N^b$p-RVJ^YsDF|PNFc+&1Eh#}e^E141vUmS}nFnq=>(Rtw4(gE+B zD2ljJ24i?l#jt@iOd4fn8D30t6CAUcJ2itSr_az^(`W%4%Q?f7|;GOn^wpVEB%`(#Dh0U0ed!=Sk_dEX-)T*v^Y;A z<(c#9&yD22d5sZzl%6k?oI(*nxsm-?_*KW+PDcggQoHZiAhF}%K10^VQjb4N=oryv z3snr@sZDlX?)ZB@%!7}sYeggBd7A6fW)Or4=UO(Fnfc|Sj#Y)O^FxH<%a%FEeMJ!gLk@| zjFe9x9V_WzPo0R=bamZLLzrd`HA-(Y4R`kdrvJ5oTh)X`$_ggdtor<>1m^Dm<^<;-YjofzA;MO4$3F?$`Jije>Z8R z%LDw~s_<2tEW=R*_oW_~F)paUdLw5Q78N=Ns>@XXW`EOn4pl$VAH2Rz-&L~s?5zhR zfqAQfCHgy+aS3Mrx8s3^S}e?q)J|lEm%}i$c(S+@Cl++cd@r2hIITjl zz5iCyYzDB)WHP0G_M6Lm`-)sVN^a(6FC^49zO&s?U2F9-luU9pv*{O6u?zY|hjaPE z9;I7k?wSKTAFBZQMHb0Jk2OKfW^0R^P*?YU7k^*zd0RSe`!RvFxI6A`}h4kLbRWff6#Iu_KF&*aAf`Nx?*_#`4e4r!*2V+8S?OVxY1x&WNeir zp)%}wI&BAjrq{5J(Z5>e!aW}3rx*T3V;i~uKrq_%{RHSVzL?qZ4{t>0=TB2j?(b7L zbcfm2&o*!=e1zWJt&e=ZtF$y(vlJ-r3Q4GXM)U&kh>;>aSFSi7hOf9wY4}CXSf;K~ z;RYTG#J0S`{L`<;9Ue^p6P6KMosWMR#2k3{y)P3UEam^K*+M!cnfebFZ9g84@^MI% z7GQpcEVm09c;*-j*ZEC>s-pR@h`Mke{vhVwgD@L<2RmsS|Jv@C6q!&%v$F1 zC1;TRoTs7S5pISeA2%A;wJYK3Cp2;GIC@M`m6mAXnbZ?Q5leL6+ceT7K7t?N{3Y25 z9HT@q@u>Nt3dXY!JMRn;UEV&rjB;cRb;2w@2J7gRGT6=PGPYK!&sqBBq&5p)rYjq$ zy`lb6?FD}R(g%qO_#9*kcxhy><}g;QA&?S7h>uKMHFHN>UE$fE@#SkBWIi=~+Rq<` zyg1s+dqJZ?5^1f;m0{FD`;74@WFQgVUs^>>SnSD$k>sThywYKsp9KG1er=ngB!z?( z7LVR6hVrTKip6Z};BHkbj!l^9CPgYIm_j~9XW6yh!F)(8L}2=!5Fg;AK8j*F+yXRXI09aq|zHf`} zBY9w&z@X?2l2x(v8X=yy^%Ofk6Nw^<g!nt5hTa`#OEP(p}P0-QxH?Eu~ zsJf_EFPX3i)P3z@F6!F2BfVvYE&gV<62_bv7)fN3h7Y8sq`(lPJenc zWSLaFp2JBzW&6f5)d=`h*0aSY))_JA>;1`C@5QH;aPy)6n>$^nDC7%Ht;W)HL%7JL)u!}EjqE!yJy%L+VI0nl4%v(gJboen-hekGFHKQupuf} z9BnO8+7MiDzym|N5{R;qg^c&AeRyP2wx4^A_;=kS(@=EJ6Rqc{|S|~I+Ku=QI{<{4-X51feVKdji%%|#bJ?S82kH6$eJLx zal_e>zwhoYPP~ta?h{5Hph7ylR(t44{ z9qU`#5qh0A7FF?CLi-pM?ose0H|e^~(*~6K{0@-w^UahD?N(;^-2HT-s2SU78TEKi zs2eI_`B7oWtyBstb!=O1rlQ!v zJ%84Ezq(P7<)B`v_43>t+!dnY5@S{k?NeIcBxnmJI!v9wXfo=lHL83PjrVijebV=t z8EUUhX<&TwSXQs{h0J8$tt*$FXRHg~ZV)NTsoeG&IH$32MUxYJE-k5a;!RWP1tt)&TmJC zwHm5$cbn=v-cFGF>z*$PBqi630ycf2% zBLwnZjHDR@y+o!b?U7Z4(tS!q|DB4#(W#mEJJ(Z9(%%cHuQhApmm!N^blme;0{@)H zc%mA;bfLfF90un^Px3Xjow>o>RWQ3jv1HY3WH+hFkFywiK z@%wCsc{*;k4qL(wet|_rLHA<4@wp1{PT|dX&ww5>zFef}oqFPflMzUf&)s!8W>I%r z`rKx_tv7qewYQN*r7M!i@7BbM|5>M9Z85$2$McL-&KlEaWL9rd$=sM*~7h#W} zEbxo>W5czNf)7@`v{q7-`Q1Ig4-;JO!O0|$GSH-5Q=$I|IB21#PXY!O^Qy77iouB2 z1vUtxpZ2KyvREw<#{;6cwvwC}%Q_~^%lT_&em?kEvBBYMh^>=ijy7lyHly-a5xObJT z?TR~qKSXeCww@eFGsdG2VG^1P7~mi`c#X;nH&fi0oA`ZU0Bo}iVeU;VYHXS^8Z4s8 zFHfl~&W^&G6zBl2pPrHfhbwhe8kG6PmxmmGZ8U0)XF%bG2NczAdU&1}mz z_B4UPPL=8-^x}<58T*BzktqtLV-2^w%aFRKI+!|mQtp{j|qyvt-p(C|jN z{P@MY?!8I5O_}io{e$)h{ZrapnMbf zR@1;cxWa}%KPqh&>8Vj9yu^&LyS1q{uTnEvnIkwO)%_$iU`Qp*JdpX{yJU4Dj+jJB z)A&zx17C+3jf{y}=LUR;ghlnw1Y;(;_*=ifMq=4r4jaF5i+%i%UJtq;FfI~s@d&`e zqi_3y$097-Pc)^JopO6@8ooC%`(_x~F$|js`Hv!7G^736vR(K4)na8?J4*`9a+%pF zdN2^8$Px=DhrJAT_R59@)Kc#MSXd&8y?rV7CRTPX`i6@aw>&xbK=*loihDU^vGGfz zs*JJZ^vpkx?b$gZb?G6zF~3y|EX2@P1|C$hMjttz;W^fvVO(IAx00CS_QrdgW?S~P zaXZ2spB>7g;AHgwuaSBb+T?H^#G(1zdE8%JS91}>+gA(anguELu7qbR}=$M>w)Jl8d+8&l90(SgWW^8dYzwa zgx2j-v~x+b6RH=zvwwDPToA1Z2J)2~YlL?AC?B4i$nJ$p?q|zPEZFTYCtV3RzYb;A znUH@DRXL86BbwWCS9CxEL!$b<_}3?RRJvc}Nt*%| zk8Q^D!gHIZM(fn`Ub|mhY<<#Fcx_=eW|&v#Nwj}-lqbQ_pLpv=bBm9oYBx8F0>Wpc zsMVFOcT@5IyZ{uhpo&k@*->&yU^vQ?+KMn&|Hhp_z2bD_7><3-&Ux!S7^MkLju!q&BPU9VcSDn5> zIUP`;>+4&P6wIIdzfL*-^}*`9P{5vZ zo0lY>n7~=8yo0ZPJ-Jv1?%e%vHm+ax>r)Gpmh9H}A+LbvfPipgm`LX*wy>vC^W+=w zQLo3;aFZP*83=ScpaI&AS^4n3DGSdwCF?K?v4Z3b*!EwGZ7j3_(*cfNIp6a%K_U1Y zE=(yFoivCNbmRUXCCH1o7;|q=IL73PL|6qPD|<{eg2HR9Q(7bxS@$)bHo}?asZ%_R zB;}p-`;23)El1A=NP`jf0W2ac(XtfpfZ*;dWEQxhWyLjfuk&7*W*$&6^$P11+kcjF{nqP(ff1%Yd9?Z~3kg zh~RW#dsw4_(OUg-RvIGWV=?VzF_Fa^7D!8uPb`>C^k$Jv04XNF#zka=i$$Fpmy|$? zh#-~=*l0Gw#Ji|bTVqxSK}7V3Mhp>@@gOaZzj_2I?eum$J2^Z>;gV&{*7jt&t+NQM z^GG~e^r}h>8u!-&^X5ah+fFb#-9Xp1vR89;S5oQMzRzM#=Tid#6;^x_-%G{~IV@Ok zZNIL{Wg#s&EawVy&F?}W^;01062z!!KZJkwUJ*_ZKkGNN{nMJOP~I4&KT5FwrLiQA z{k3%}MdzUU4XrKb+V~EJwT)lR*MW$`NhbxcqgIuc`iX&DJ+Hu$Wof9pFpPX!L^4^qvv=AzP4)Ui8fl)h8Ib&RrIKKy%C)PdJ<`D-4b8@7X z>W$T4SgO4va=##|dfrf4jaF=+7ys;J)(jD*ryn)!w!hpzO9-~Sy5^wP+;aPqF9u<R}|+ou?*yv^12Yau@bPMU?e%9QtyNyN6t4 zCYxpQppV029GMP_qXeojlgHudk@4!N0}-TP!3fZUY+yE=dT?Sm?XqFlpP`>Rb2peV z;kx3{GELfi> zTq>u6!Fu>T>&#p+wI`RCRIq=4y|_ejkV54fzq7G$1RIUGFgD{PtumzuM*-2~F7ljs z9eR50(b?jv`ntrXPhv%SguI_(Z9yMbueHPHgIZ)9{ngj+WObD1ug&EyC^OhYUyS=% z`A?Aj{zwowldC-5kxoe`^YJd2m{*=9jxlb}cr^X(4*MV&R0z!bR&Cw=J&#I5wTqCm zW@+b!5>*`agS+>v`tZMZ;mXV{CB7=v{)~IXsXY&Ix?HF+5xMq~EKKj1@-tgoZf?W0 zv7E~s$lnL@O>13I|)+D6V4T}8GiZ*L&3d%zvJDDK1lo0`#pc>s#&XAAN^ zJWBwoq5A88RXX+j<8wPbV6x&~n*L^}gZ({z)B!4whja2s+hYUC#`{4N;B(z|MZABv zA0eMJBPOhJc72sGvj;;KV|%d{nAST#cO=;S;fZwPj4y=>Nh_=QUK+D_=S5Bz-VZxc zhtT&IF+kPYaAbv6F~~7cW*n9d@{KcG^Tzq-!(qI7>Ccs??bDCmyKod(qDfx?KjAZV z`EOY)8PFV|&i;m%h1p>RgH2Sd8wQ1&f+=Qmhwj7OC6zlMUBj3-V}Ig0yOjSP@9-1E z|D$a4M|EtJ0#gkF%aKBR^>-weR+Gd`&rGC>q#Tk(%S)n1^aeL>58e5X#VE&1qmCVj zhyw}cgNj)oacZ+HTo3354^orG%$T}hx4Whdgd(9X5QVb`{2BX+2#aio%Lzpmg#9Qy z8^Z}&n5tH=mI^GHL$+1K4tbCnrEJ0#HW)Pt_hJAlxtp-YCacvo zCK9#CazP=;;AP=k5$MRhK^n1P{tBq&U8yakrT@l#4)O*uAFzX#r|Xhs9KMs1=HDN> z54H^mQu+x=OSe~beAw+zIJ=hi6HSIJsNZFSvw#PYLf(hfXhv^XEKAPg_ma!CE>Da~ zVpQsV6eFafwS6Q90fXLmO6%2gVivSuv}RkQwFCS6n}pn)kJgxI9GaE{^?Hl-*fX`p zmL{cIHF?c46?0oaiHfy?2%3Di3T|aHZ%m9UK&Z^^icYB(4SST-*yaiN9Z z{s362WIZ5%O7{X;XDQ2+d6S?*DRF)>uQBdW{*63Jqf!UEu_bxUc?L+AY?-lm`LA&f zrX5_$e2w3y=)zWi`~k#S@**zszSG5-sHa|--#jeo>oCF{>L>sC_lHb)7~Df+Q`Q)ANKQ;Q7q+JR>P`M6=LXwG<&9vC8 zkw<|1TQu)qtiG+n>dK_1df`!V$6Nx*kwe2sln*`U>lt;IO8A9m>KV_Uc}Sb&h;^CT z7EIC7Am23CfYpHx8)^Lp)wO?zD`;7CRD?3C&K|txpG^1K$-8>G{v}FkEbXr9qy#7C zW16llIF5U)H`x#h^t-G_Y}u|!4+@*{&?i`=cB<9Czrz!d)iMfPdZ^c7NrXn*C+axk$(C?TgIXa&lnT@m)w^8hR!Z8hnG0l9AM zO51wENO^+Dp9X1T5F43Fj|~-SnN|zCi|4j(wZtSN^^hr=Z#+wmuvxGp)kVm>F&a;I ztQ}B#EBRS)PdTr87HjS85}Izat4}67MUyk*N0;qQAFhN1#a0hIYCCQRL6*rhgLKP) zx?$Ze3mWR>Z%=PkO0SS-7j{Ws`X3$gB2d&Vm7kt}>c_c_aLE|`^(?Nr^i|GmokMW}{;?8)g)1~Z zM?9S^&12o+1G!pUSezV~&mZCP02PJRszYeCfXeX;PWP{-UpY^lnZhGw5`RrMG?G|- zyP#=9YQ|m*VMAj@%{g`e0_<>6p0_J{?DIw=KM|ykkAc;;yq2NK|ii=rz*_3TO-VQ{h3%02D0{(T@`mYoZDp zT>j{jP99W{t{6MtfI*fY2XYLrw-kdQQ&A6OHOS>=QTn~Z+>Eqy!v#s$_)+EbjyEe1 zWVC~WaaWQCzt&twC;RNBxe$8dU?o|d7E%Hes~%BVqa8s2m`odjZE_f0l!e-1 zMxP+-*CoZ222N*2h?M_!k)i3P*j7c?<=$+&1yUHJ?2>+V1yVxetOOHmHX*V`u$&B-A zYh)UL4Y*dk~33MED&a!kj2$U@ZavROmPf(?5Y!~Br3MKN4Z4r(m_Qas7?bdJq_27Y~ z-mo09yNd*VNjbV?9gEaDhxWo-Z*w``1^-#KAvoI#;?ckUZLRg}2uSf5VLTDfq1)b+=^ zcrrPi%c2k!gXFizwsl!6wMW`5FaC^t2H1YqmftR`(*OZjhC%Im`xfaD2*3HwMJ=Cc z8{MR%cF^@pfhd9BWRIC4lx7`IOPZjD;Pvm|;G!mpK3QcP!Q)82a(6#mmOh|&_$~`R zIL|v+eQZU$`_l@FuyPlXNg$nbUM5SLM78*DG?4<{g~{&52V^m33g|SWDkxwT*@~fS z|E#Wp{iOEr(>AE2n!pc^CxCvrc9(u$iCn{-$}jSer8KH^t9}39dh4HBZZDf4750CH z@u#1u-{kFa2Xkq$gkL4R?p})pTW!;rVi^xs?U5YwwB_YQSl!)b|1+fu<}+g<*cfjx z@J)~RW+`VjrDRwPctc9}yffFE+G9AX`@wA5nOF0#UZAHZ=jy>XCDQ!C;k=Z&cpSF?l4PHKznc=f#tr;L&~n`HGXJ0So@u+z^KdSFCM6l?X7C+G zd%ns4j^ubdX~pFIZp(h}2Z!+F$lGW9|5x^A{XbqH`BNsqsNE+f}F|9y#WznZsi^dc8BRba)E!X0n)J zx$RjjW%||+&8KyrUjKDJkTDnI_H^FuZgA^z*re)wz9?Fwr}KZa)M}09uPiY-;OH;e zZtm2TUw^%9R_isUAE-|Fk-no{V(7K8D>D<>o2c)V=et~>TJ~7RU zW~>Niya=X${)>g#p4zRFsy$~|d!9|u2L2xr`7_AHW7p;>dG?G*C_ckoYc->fgIm#I zAF8U&j+p~@_eSBz_4&3SbER9?QJ-b6T&nJbO;h@R0BK3A;P5SiQ1iMAnu-naPSK@I zo9EkDRgW(i2d>$KP_D(r@ZPg}4@`%2T7wlHj!Vq#UnQKo^F;)$yYhLUIc&;SW85YW z_f5~&JdKvq-W&bLjo^E}9^u!1SJuxKll%WWLH2dX>hj}&&Z~U2baM>9)W`j^*XnZ9 zhuy8pT|`Jf{LAwy;hvb`U9jHEUI-%7CDH!>DpSV*|6u&iA`rvOHJF&XHQ5kIQ!>*} z@@nm~Gqtyu?!I@ua_7+Vv2=cK;TXh|iG{Ki&|(0C46OTGHl{}S2Tzcw%lTrpmr0>J z!4vT(}lbblV%O@ ziKi@(376~MC&XZ(wNe$66qOVT(>)+BgCz&bO&$p_UhC{^HlD9fDX z=vms@4J$1Pjv=kO9RI}jfS$FIF|kAfSjrYx#9On(eUw!X_%%OhalSeBh~Ve_%MRPo zbB^lUqoH^hj0CEX#4Mb#kPEotOIwPbJ?dGm5p8Rf2A1C4{>;p*172ceIqh~0Grv!A zH;NMYfaR)LNt?Xx&b>oqZ$++EvpBN+X0lX?4yif*Mg)C`Ux(7GYFQ>H)uDg~EeAVO zKDzw^JX2rqIMP{m7?DJj#8%Pcz_1Ug-HVud^mL#5P>;{yMRC(lyzwsL5rVOV+Btx# z+*tfGaXp(mJv1!Pt-c>yqKWfEGwhx>E71dyg|mh9P7#}C>QGoqQR*UyuhnUI&L=)>1ns$7-p&W@2oSUuOGeD|?0wNZodL5qn=@B^ds91)LHFFC zT$v)`11=gv;kboR6#M3qI=#hskef1AB;wm_a^YUCN+=st)MY{1O%qIu$ z87z#oO^AjUTy7baqlaKW`Y3avXAGH8x^*``WFOE8f@9R7 z;)X!!@fdfNVWGa}iLY^8vLa3_c1G9q)DZ|Ga-xlq0P>qt5DkXdM8S!V0f1q~4wAv8 z9j&hBn?SZPw2o*2%5=Y3(@x{o6YISz20(AV%Agxy$m$v($Vfq_YKo^QKRhWBW;)S7 z(m;VNuDQP)dPE35<9y!wA+G!OyL#f<9W6l&7LLfu;G0gmYyQMj&@D#hJSI~;@NKE* z3VS1ug9L;YZ|eQATxVy&b`E4MQ(TjdlsMG`IS-<8FLX!o7l4qa61hUXf&=`U zhTNVxp>{DEROi6*5#;{SDJrNX{J_w?-NYsWG!wsr$+7y>MACRt!?bG=LRcTJ( z(8espS>2;DAIHzvSe=zQ0ruWGFl*}Lal}H%r-?PYfiWiWYOw=T1lR>N7TaO#?f}O{ znIKddB(cT@#ts&yq;~G0){kBt>?@L@JOijT%vGotY*Pv^hAJ5^=`fLZh4q&HZavGr z=(!-BXltTT)$_}-;zslq;LlS)|E38BO&I>I8tsoe zQK$~)@2&1QMTA<6&f^dT-|wb)872IIr4(0xTi+f}_7F)Ue;$u&pc;$DV_9leBp%Y$ zWacI1u4!uiQXY*r%3wuQi?trWmC#=@O2dRitY_rQUSeg!g%Vxpf1BgL#eP$mJEQz^I~({uk;nk+~( zh4TJHLlbkAO#IjD{al0%EE#Eih_H7>9^069o;)O}q_k!-qB!Pg1vu{ei}}!_E8%IcQ>kanS4oDqI-8db;&l$h z+4{ohuKmZvBBLuGEMA@%JGK6x5Ng+JQf-RbpJ!F!YpuO|QMlqu7PP(hN1?9#AhXr; z0kUXRSkURh1*njab<{+TA*!zSuM}R>0V5I>wX9+ohID(vqmZ_qgEs7_`}Y>7-!gZO zo`7~jK0P~S`Vy1y4mZ4LlAp)=H%)y4aac~xzyj6|o2T-cQT7>UiL`lWeS(tqrM(t1 zz!!@9hJ(#FP5%Py(#c(j?=Ci-9JM9mhV;I(yx+yG*2}B5uY!LChv~`HMTZQGEEIe^ zT@^~CQ=b^6WAsB2-IAx*TY+X&v%S_6banEUu zO+%Do@dU-v&i+3pn$)Cmq${>y4(%kVt; zn5#bNsx$a8mY99eewqUSg$e@0xQahBQnrIrPBJ!8v9sqO_zMZrN)9?bB-Mxkq+Hk| z_$qtDZ78871ej_};K$HWH^)akgZ_4?;3-&N&K-3Hlwr>dQs1B7+$GD>S~WMZTPh-I zT9fk#s(Q{54BOnU1KUJ;w}-67=aBmIjCa4cBM&>s4*vP1riBv?7N65G7+mF2*<<;> zGsTohY&ef3JbibB?3S8jpbtfM42^Qx4w7oTLv-@Itm>B%1o>;Ne^Ch1P{NX_Cc}qG z70(R1AdJZH+$}pp+{mMyB|4yN^x`+eSDMw-bV-1IkJ>T5K;?626#)fggPsw;j{*tTu9syEH$g`afvMJLB91Ng!x7rxYXxYg33M!hrY6+vOj9l*{lhz zfh54paI}_!sQ!ZQMd;jWg;jm?v&)*s^|!qeeEJmi|={|LQ%?zC#PgJCz}mPY)8_F&j_ZIrOUtWh%)n%F_R>x;>I5s zPRsp3r|_8P*X8tNcudx|=MyAxEFcyHw%b*zCr~0~9_=2MK1xrc?eg>A5b=s4E(u~s z%U0Z|%0{W;w@v@TO`5o)YfCvd*Kwzk8`c#>lE^WLwIDx)4HtBB)K?i+G2ZW@K3AfW zG9DD)L-}Dcu?C~?+ee;T?Tz_;Y4>P$_HRTLKk`ydD?ZJV>CNhE@p3%{%AavSd2RsI zl9F`$*wsQw7-ez+F*309Ryzj?^vV*!+f(MI48lc3>=wjQ<6l2g$S%yrhgO5EoT z&DPyM|7Uq~-?8SO4g;3wuw!U{0a~l9S)RxacPef>>t{03!)W#A{`1!E@8YE2(JA&y zr}|hweCu`#T!43HPb2!qlv}mnXRh9GXP2M&!ZNE8@=*@QE8J09b@=lde4X66Z-U|- zFm7B*y#)e2AyFwK1QRuV^?-1+c-ij9^US&%o8=lcggTRPDBOIowu{az&CHTKV!qC1 zAitgO4J2dDkBjE^d{do&7A<>I%9na^lyVo220@SaHMKG%cm`GaA` z-o)kK@MUO3jf)Oid_~vZuJ#V`W}dy_*?^6!j<|{S-qi=f7MVZuqT2vX>%S05a;48E zZ1rTL_G|aLsenGuy6f)zU*gUFsRM6r(R$OlVzK0^5{;UrPt2+b`?5u=zBuKS;gk%% zxjTFZ@=@2Qu9>k3pruItm%QP)>2oxCqEi4GnY~;;X$$HVp4+YtG_~g0p%{K3UhVS( z`6?7eIsY6}u#9)PsYxh{W>jg(MFEC%iT!y&n-(+8GI2`>ds3%MU4%4-P)GTHxB!6J zn3AQ2G7=q~->Sz`u|{($6>NKlW4MH>$OZ#P=fD4!!PmLcx?e$pQ^`G&>k$2+4ChHy z*Hw#8Fa12HE6eRcowq1u<8{LB<|#&=xLWb!u@^u&T4Ee3c!@5nQ6kgq?b~@3#11gE z;3F}oN|{Q7L*l=0AJcMZhUQFlAm_rSxDQSfAkg}~;m&)Ta*!tMSv!+!JKt|G-&>c+ z=5RsZs9!&~a~v11!FHC!H6+Xx%(CPg{bTQyjluD)N#_FOxm9PV-ag3HyvK9q>sN9f z4>bH#6a)Z%LgQ?*Bb2Tlta}_pK8ExSweCy==6%%-PUn^WNtws2itN}ZuF)W*JTkEy7j9~C-}(w9Sj+3r{dUYHa5 zoY8yT!Q!bo1OZ5E&PZv^!JjbWZ{3}{tV3u327n?dI>m{gU+O_kC=lbcDxJOivQGJI z*OJuPud9y=Rh?(7gU#n6qnPy2xDc0cp5KWe*f$D=hav^Y) zp=KpCdeIGbI!ReI(9`|~~8rZ&Z9l(VJiiPAQ85{)8m{uM2<)5PQy4|n?00QQG*!a{cR^(v4M!c7ipL+N(x2=jg$pds(9;pWz)U0xRf+e7g8C z^OBBiH8hK9q%}B#?E@;b+)m|qse*7I>1LVa~qPJm|P@y|WckWTkc|r7_Rkpkb!U%{P z$ea_~mY6-tcWUu%M@)@v6SEE5)RjFCN4SfX9~>tPW7XjcD)aw)Zcas+ROTQ!A~+9l zS3ciEk*32H;+%s@pNy+NH>P1LpocfrmJb>XV^mQ6=G&h@dkoEy@<}cJrPnT2zE59# z3@vb(Id7dndD-56>+T zuBwlrO;u-zmaOVByu!I!X2A`>sza6tRN4|k0;MA{CpZ?KVB1CJP2qV9s5nZAxRB|v zw1D$rP)i3}s?UZpV$#9HRu6T@^8I@8B6Tmc=LNEq`0~XLaIpPcZT=HwWBVRVus;vC z_ypQxVB8Qsh{kx8Rgtx}U@3q47+OC=)WSJX%wi)f`l}+SfPfJ}Y%0z7PFuF+1Ny~; zrN4qe8D5D8SI~oSfkuCb*c)gHN{3P9k>=PU3uU07V`CPFu`LHU-v3EV@S;=bTb`)7 zGJb=H&}bShvIaQkZ5e&!wY+WBL(svH>1$-Oekw1Hf_C=Lnu02+V4#f67k0C;g)@YR z5-EMVm`>^fqBLEVaHxsl8a89bNA5-*!Ge)tHJf_77%nUk;mcLbjE0{og7Tk4Nw@s| zCx}T8Q65@3|La+#FiBA@N005zJc8>0`6UI|zFY(SU?rxl{tyA>D^1XFR2_NBX|Ejk z$x!^ih1T)bR?Tkqt}j&5{9t5|5rYTP?bRjL9umBe^GN-wq?pL+`LPmV|e`E`;bf0Fgw)*@SS`D=OaB`guMUe1v>4;iqC^)h6uG|y?VVphW@W+ z6qaU(3hk(O1Vj^%50EM^l*KV?OU|QI6%hRn$M+T_MMVoIPTo*i+Lmhf|JH)qizwxa zDWxS#a?3P10%+m%U$T-XQg@!&3MG=UDrM#3D}TnDk&e@-Kv7BK;-lxknYY^lT-ZBq&qkc5!x!+dl$5ZAvm)T{l6oEb?KiM_{$9${=-14MW&0ZsKRZP67p|1_XS`9oJ+Kp<|xR{0x&@=#Y z1Cej&S;UM(uh0mvWP3%u42uLm1~2Q@a(6<0T53-bP!=q#k)+ySfH?v()utz$)Bo-gIzw`Sy>L?g8n)3-lQbkN^*YO z+ZQ8(vsZu+{VvF z&tg!5yOZnL6ca-`!#tB_-fSS92OMl}+k1#>qTQf5ln{vAyGBEn3O!F9Z6&wpDoXbx z1o`c`xw{*1>}|Wj?tDJMZXX}gO16e?pAT&{1~^R8OHQ6Q;+Kd>BnK(W2 zi20$z&XGo^g}>o+SWxZuE}Rj3Z8)J%y+mHa=k7lj$VZQm5qxFd|Lu(!dQ_py6bN(G6|HUir@`vKbIQ?-Dq+q z6h~I$WkdyD)jPdEHh_l;)($?az9f|7e756GRU35?VeN6(R&P)oL#r=ReL^mk-PUT44UD>CwHr_5&V$v)i)U;Vb!5@<6y7T(x-7~ zw6nx98`TB;j7k2ywNDG{8#P`V-sP^8!60@I*nYw&?$Nu_?Gy5fyd#{i96u0PPHc?AILj{Agbvvay62c zjG!yx`dZBO7m2}90}c*@WUFNC!@FNZd-T&B@6s*sdMZm2zynW6M3PoA` zIm~bqc3WobLfPJpt1_;BZEXfK>;YDtBBk}jXOhZ>#?H_KY%D47h*N2vBpR3cW%^7;1 z>3KXHnzdPQ+h-_2;}&zyZr?T9eU|}cfuO&?amb3rI#pq!&%gaFr1Yinv#0Rkaf$Gb z_RNoF?yG^@XKbsdD?3;x+42!`f4(HKj}lqCvsOz_ zQNd&5nd8x=+@ zeF`gow^+vHZm+{JwL=O->w)&`xIr-Yu~F6l8a64WC!60d%^Eey&;MHf`c?+$-YbJVDoW z8_(Xj9g6hdV;OPF(Tk|8_Ch>aHNwro^J9cf3Lu?OS7)vHlNPK2!K>`QwN;BIfTQPc z9rCANNh8RJer(Vajpq%;aXkHpi;dV*2gyf^ zTG$XK*py8;1<3*(m)6XH=ITLB6fkq9+JvlRwdecbb4PMd$H?qVxSv0^`{lW zroh>%{tia4*l{`xpxbr24M5Lx7lxrL^*yg*uAY{G!cG%USmj{w58{3KU-E2k`XS1H zE<{ma6&2rg*H7&O(gtH*vU%z^8(})(TzhQ9st5 zgR~1m&QG1PL=NQPLMI1}yCE&1J>I;79yX^rnb!MDZC>rOHalby2D#}=(pdYbt6nhr z`&H_D_eI;E(V8t;P>q*QzI}x=PG=F7sy!d2K&Nxgb>N-4E=LiXi02;0m)lxBuG5g< zdi(Qt-4qY3Sk4e29Y$8J&LuqMgrkFZPKZUu3q#zL9-pr>(tQY$R)aNoO0_|>z*5cd z)4!2gk4gjb=m;0dFl!x$3HHfJ&fS{}?bOo76K0$BMpzoIFF-6O#Dm7+&impN@Hu+} z_&EI)n!ltpFveAFH+>V_&ex%T&{x=Or);rKU6-Q>UzY8`H(is?Hh(l$cm>Ej+x@Up zd~jEs2QRFmT`yK3R*}n5Cz|fDV>h4dhU>|`CRyekj*$o#^|MCnxKW`qkT94;2ZH_|5@`&7U^9*?*Unj_tI&te6-8o|gbMv777v^Yf|# z{)?GW3(=4$XQs=SrA$KeO^ln4QB`#~pru#Djhz|=i1>9EiW28e9f@J#1D5csuZZ4C zB{Pug2hxp`75;`txDmKvoMNhq!Re~vyd92w-P6m#^79T)t=)YGltbVuLy3X9Ed4qk?RgtBXwvkYQ#2{Jl~+64C;z|lxt}xf#q^B z7u;FA*gp8~#ZTP3e`3J>x{=wU+^F?~m`DzJ~N6mi(?F52UWdJXi)8 z2bt8EtbSl2M!YIAh5Jn_-5MA$!qXB2oVXdk3c3!=I%ogJB$@T|UdsqNSYRmU_TWB< z=tK$RkoX515W^PEpp{Mggo$LD>`0>f+>$+NlK6j?z)Ad_%drj3kWb!6yZHuECq&(f zDbqnT(JE@?sXOaTq>O43)%6&wvd^4_v0%iRB_GoaslsD;27!@@Un(=pBZ31$vpJD) zI%^4+lzgF2C_+g&OaWn%`J?Efro{a!t$)bxh)CtW=h0$wru&V`U%QFDh^wp5+8<*o zmTSixAZ$tLT>y&y{v%cQ%O;mFLaY}9_lEKlGnwh{eXySO*zq8oU)sD7@WHPpXn_V{ z{=x7>(i_@oJZ&UNTWbds@SN#wJSjIMmgUxodRws>Uc{$%`VlKUiv_Nu+RvA5E?Vwe z)bH2XJ2L zRqvszS|5$F+I*O(leL~$)5SC|HW;w=?2FK$ia}uA8$0p?W<6tqJ1M^}9APo6y}`9K z$EdnPE;1vtvf4kt%naI7b_O&}JvamZ?XuI$(?ddfUj{5qz4GRd%;*YiaK!{7Jt92% zvKff54J&mYcd}WH4Z?}VBQ@hH=8ND_JNzTjoo6KC&{`~`K3{}aL7{(Bbv%j*=y1&U z?rE3?5%M4!K&nO(M&Zof6m>e}^(4cwoz9aZ;J`+h^fcnq70q_X#{P(pTh&M&yJ z+N4KDYeLF)IP%>4-@VjbV~?eM=bY+sZ67l!jqUk+#CW)1g6&o>wsB;I$4KnraMmm* ze*EPG(&fnL6|2-lQ7+cW|2{DPV$ES`H?&q_$i6+{6>R6nf0&eTHwDw_S9#FkisTZa4$HEzVP)I9%xnCif2ZRV=@ARQ!Vm z*kFg!m51_&%~yHe)vuLyni^*xHyp&(3X=5#;ZIahdT-4j^s$ zAYT8+nJ=q9pp#nnrPp~|$-VD@X!TQf1^`njysUFj zmdBJESA)%R0bpwIf%|&=_cy*?@=806pR(wq06t_et&~Vv`fuvLvCKp3Ll}<3gK)gw ze|ZIVcwtNs8?Vr0n>KVrS!k6eXsK${oPu?ho*hfKCk%w4Ai$2%X3;C;Ax;`K4F=)Sso>Q0wtWfG<#ag>(X_43&rmFH~w=g%t16=3PPK!@yQPE{RfnV zHEtN@W~Vnlu?!dIaalT$OIZm_wT*Ku-~}<#JSVb!&5kKy&a(C5x2{$f<_{%r^pkeP z5OZh%YhE;5$`bDK?qcz*;A<{7QE3U_&niPl-^a$1R>*lsb~G2A1K01pj=jaRq#*Hh zq;XtB1{|4SdHJYsyIq}e38+{^{!;7Jq6f5ayG=}|T&r7*RA8{vvKVly`or~9JyG8x z_EozgpORt#lx%`D*bEWMb7z4v1Wp{EcgUX&qo78{=-zw(a$=wurehjqCw3ceB6^S? zK#z+Jlr+Ojy~D(h-c!ikAazD>TyrCGu+b$bMjo+;Il+eejpigKwTgjgH`+JTntuSy zaM9|1vbxl&DP}$~eYlf;riX~lhU%LD*cLQraQX5?K(?&ICX3W1>x8jCx8PU@+%P6> zgu(!q60x5gEa_OnU6DnU*wV!^JNOn{do9@e+>9^*Amgx!t<8RWRls;kZ8gMCed0wi z1rD<&+KB&G&9{GM4jCy>6Gc?EzzEvUg=8V_h5BAxe?|-oXtcn9xowXiB-pIlQgVW+ zDa!GNcP&wz2il7BWz}&*TtS^UMvNoTlr^oG{9az!a7w1@m9V$oHx!9vN`Z2G zcULL|L&4LZDIeUso9=79=r4oiZW#SrI9+{RQyrOXr=X?_)iJMUHxC9tXcRNVB(>fI zQZz9ZYJgcDBaqq<6zRzKE=^vZMb?rf`Kh1kBNlh&kP^Ik2C=FTt+R|jBT)tMQY(J| zU=zV@VacTW;x^BWh#l!q8B~~mQEa+mX@i@f_Ykw9Qopr6MX|Gn5$yF$Pul>X<cQaYDLo!#~zhzcvVNFcVCK( z-X>^a0pcG=?CZnzzOEvBZ{q7PHAp6pO=}CTR|Eu2Ju|osS130tVIH)}q`G-gZ5JlK zDx5@3-cGAvy%xC#KoL~#Zvp%6&p&fKF#Td>rM?5&cuxW-(YB_8*682EnT7ATabpYB zvva%5=Oqs~`}; z0g=t}{b5wqw5=%mm!q~^ZZx?-hlf~qxb=N=+!8ctH=dRzmIeK73e5z&DW0qQ<*G&k zrLY9_^7SXhn%pZ@>A>BYT5p+7h_ytXT*L;n4}p}Ui^fN~?ehm3_vWK2CKNkDb37%I zp)Og!z{F_6d8e6s{-_VZn5Qo$-emQNyJ9lAD_r@&ZjalewuLWDz;9{T}6C}3q;K`EikT8Hq`pt^)QBc>@2R^oD+i;#ex%pVcY5cS*4I9qj zT?i`~K=6R-getJiJ?uS)LSBHdJ8=~LZ`<)-?cR!3Fsd4Oa>76u{^oU7>i~g2+K)lI zYf3Wf2+;&?o`ih{2g{F*x!Ku=RB+VFzC9!|x&Eob$#K6L8&5Gl`AqoQExLveZDniAh{4)Z0xj0UHK{r^R=7-dx!C z7R;G%W3C9ng`=PBeK%c+Ner4RDH1K(^hr##78?-;jo%(-?h{ zxU9>LT%TCvh%vj7Hrlp+y@=06|B9&AjiH?|jia3AGeS$9Aavye$72QV*`~@K&;qs2pD9;&G(n*zvX*# zJtfdw|Nf1dhCFxYj+v@z5ZU@1|L(PMkG|Bkw(qY`WBK8dWu%RnfazU*DlfKwhP@K! z%E`%}OXPh&YxfXux0QYJLqDeN&R){<4eb48#&>uo7g(?JXd?ZVXt}iTO(2r9j)0Rh zQS9rJD|>YaY}bzyj*LZ+2B0vhtx}BMh11_L@A|xb$yVGU1Pn1}*J|_PQ?u9E)*Qgc9lSg(uGm`e=%1riY*FSV%T z>9wJD{LqAR-_1yYlUp?QGQSe1HDbUjG4{Q$t29f*L-#2~qP>fAwxkZkQb^sd$@Pio z@_Yi{rdU3M1#og+-hbp+&lo*jK24O@!~U_gwR{ld0(uWYa3Jz$B0;fBgkWZaA(C)U zx^JoU&#&_x$@$gT4KIwpo?aA6gc1kzQK*8F1@oz##IB==C8w$aktK#|}GDC}=B<4BLP z=Z1Wrqv*{~M-mvwR~`6#II9s5@%{DwY`5m7@LkQ1jrjyMxT>H>m)M9D?S}_t#cu|( zO3O45vf8k2yID$r+R1IR*|o-_CGv63;dR{y6aR`2#hy-9R{q!-u=venR87KAZ9=(> znJinGLhno^MtfRggH;KY^mg4=Uwg>j>rKGYUc~S8)aQAH;_Kf={5RsD3J!rw4lJ*!smXHV2QR_l>e`$xsuS*kjg}TS>X6N-S}S)WBSK+}0CIiR z{|XEQ^ZPh*AyLkTk3aE*(=J~>@4T|gh}F!)nVBXeNlwPhV;G=}K~vR8pN>I;r>781 zQdLpVxYK{c5N0-va%~tTf@Z_QwV`)5)C~ileDW9Ew`Gen>-_M+2g*9kkJZe>HDJ^v z?4$w!6h%qQHZ|AEQ6Ul1;~i3g*49@1>7$SBK`BF$?oL6%{-MtrDmQ= zp%ODsr4W^rd^u}FAb4XXEaqG{3tyRZX4&?!x;sK*q%-lQIKi^)Q}761F)Ia;jkVGz z_T{2*HY`^SJ7{g#yt^5neU<~jqeA-k?~jRJI%726>jMhcTWBz@pTSLzjze z0Dt!UF!cyuz3_IRu;m5WP|CnSO9r%-^4nWpkd6I=@B2=cnr_tNwV{;LJya#UP565F z7LVu)UA0@7dZ=9&E9eJ3X#?-Sg*M&lr?!nE{$LmuDC66MvLgGmXLQ4K3eZ%ppTof8 z&~$@m%#>wr0|3;{82|tT1XWe4Q!#&9(?Ah22!XTs7S|&>fvPG_Jr<>~ObZNlmQk5+;1ni` zS5=oAWKjyk&dO8h8_&Jwwt?uRmYwrX)Z?`=oLL8uW$OB7@eDu=oK7x+QH71DM^$8J zJ?gDTlH4>_BAbx7-+mig($Th2WW`P%!u)+iG^Thu5dz4b(P&xJamu^%;kRK<$6$;B z_TRaUe*_CIeUJ@f;;B(s4;&lj$qh|C^?0|8{WbtAcnvJ|TF5iO@Xsv5oN1YP>Jh*5 z%?;V^AQS)tCGNHIrziDHAYQ+DU5t@H8*iJy=L5GPD7aSe3^w*(0&QfO3x|n;K&fYD z_SQrB7BQuOMEs#gZk8Ng4Uzb<08xMH=IRzF=P~ zA=KA@#QpZSfP3#4;K`m-d|!EUa~~*!&xV&M`mbyA{{aV;wNlsLR@49h002ovPDHLk FV1fh?Gi?9> literal 0 HcmV?d00001 From 7147526327be1a85f0562be75a75d972fd65057e Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 21:13:02 -0300 Subject: [PATCH 39/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 75f60ec..7ca6567 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -153,6 +153,10 @@ public class Drone { } /////////////////////////////////////////////////////////////////////////////////////////////////////// ``` +
+Diagrama de Classe - +
+ **Questão 4:** ```java From 8d3f2639000ace08388585184ce59b1e59106946 Mon Sep 17 00:00:00 2001 From: Pedro Kelvin Date: Mon, 10 Apr 2017 21:19:48 -0300 Subject: [PATCH 40/65] Update atividade2.md --- lectures/oo/exercicio2/atividade2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 7ca6567..9784c0d 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -154,7 +154,7 @@ public class Drone { /////////////////////////////////////////////////////////////////////////////////////////////////////// ```
-Diagrama de Classe - +Diagrama de Classe-
**Questão 4:** From a01dc2d683e1fd98f028efbe7b7e89596740d2d3 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:06:26 -0300 Subject: [PATCH 41/65] imagem --- lectures/oo/exercicio2/atividade2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 9784c0d..bacb164 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -154,7 +154,7 @@ public class Drone { /////////////////////////////////////////////////////////////////////////////////////////////////////// ```
-Diagrama de Classe- +Diagrama de Classe-
**Questão 4:** From 010d5e7107fd1a2c59c1b6731c3d0c8c128bf6cf Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:08:43 -0300 Subject: [PATCH 42/65] img --- lectures/oo/exercicio2/atividade2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index bacb164..dcb0216 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -154,7 +154,7 @@ public class Drone { /////////////////////////////////////////////////////////////////////////////////////////////////////// ```
-Diagrama de Classe- +Diagrama de Classe-
**Questão 4:** From 20e7a2ee2442d4d7dbff9d2b76d3270b9f5f9c41 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:29:55 -0300 Subject: [PATCH 43/65] =?UTF-8?q?Cria=C3=A7=C3=A3o=20de=20nova=20pasta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2_.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 lectures/oo/exercicio2/atividade2_.md diff --git a/lectures/oo/exercicio2/atividade2_.md b/lectures/oo/exercicio2/atividade2_.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lectures/oo/exercicio2/atividade2_.md @@ -0,0 +1 @@ + From e2f7a4474973300c73332ce4cc776860dacccebf Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:31:06 -0300 Subject: [PATCH 44/65] =?UTF-8?q?Quest=C3=A3o1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2_.md | 57 +++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2_.md b/lectures/oo/exercicio2/atividade2_.md index 8b13789..33d6cfd 100644 --- a/lectures/oo/exercicio2/atividade2_.md +++ b/lectures/oo/exercicio2/atividade2_.md @@ -1 +1,58 @@ +--- +title: Exercício prático +layout: default +--- + +### UnB - Universidade de Brasilia +### FGA - Faculdade do Gama +### OO - Orientação por objetos +------ + +Atividade para realizar em dupla e entregar via GitHub. Uma entrega por dupla. +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 classe é uma entidade que contém atributos e métodos, que são responsáveis por descrever objetos ou mais precisamente para criar objetos. Ela é um tipo de fábrica para a construção de objetos. +* objeto + +Objetos são invocações das classes, são eles que dão vida à classe. Objeto é uma instância da classe, ou seja, a classe é uma forma para o objeto. Tratando de um bolo, a classe é a forma do bolo e o bolo é um objeto que pode ser de chocolate, laranja ou do que quer que você queira, e cada bolo que é feito é um novo objeto. +* elementos de classe + +Os elementos de uma classe são os atributos e métodos que cada classe possui. + +* atributos + +Atributos nada mais são do que as variáveis contidas em uma classe ou em um objeto. São as principais característica de um objeto quando eu o instancio através de uma classe. Por exemplo, a classe Aluno tem como objetos instanciados Pedro e Matheus, ambos possuem uma matrícula, nota, quantidade de faltas, etc. Cada uma dessas características são chamadas de atributos. +* métodos + +Métodos são subrotinas que tem como estrutura o modificador, o tipo de retorno e a lista de parâmetros. Métodos são responsáveis por executar mudanças nos valores dos atributos dos objetos apenas com a chamada do mesmo, não sendo necessário que a main repita várias vezes o mesmo passo. Esses métodos estão presentes em cada classe e seus objetos herdam esses métodos, podendo ser ilimitados. +* método construtor padrão + +O construtor padrão também é uma subrotina, porém é uma subrotina especial, com o papel de alocar memória para o objeto e inicializar os atributos, retornando a referência para o objeto. Toda classe tem um construtor padrão assim que ela é criada, mesmo se o programador não declarar ela o sistema irá providenciar um método construtor padrão. +* método construtor alternativo + +O método construtor alternativo, assim, como o padrão, também aloca um espaço na memória para o objeto, a diferença é que a inicialização dos atributos é feita de acordo com uma passagem de parâmetros. Diferente do método padrão, esse método pode atribuir quaisquer valores para os diversos atributos do objeto, bastanto apenas que sejam passados esses valores como parâmetro na chamado do método alternativo. +* estado de um objeto + +Ao conjunto de valores que os atributos de um objeto armazena em um instante, dá-se o nome de estado do objeto +* retenção de estado + +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. +

+ + +## Referências: +\[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 + + + +--- +*Última modificação: 3 de abril de 2017, 22:52.* + + + +[eckDavid]: http://math.hws.edu/javanotes/ From 3c0a483e53051a44749f2db6bf4513ced47be6ba Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:31:56 -0300 Subject: [PATCH 45/65] =?UTF-8?q?Quest=C3=A3o2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2_.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lectures/oo/exercicio2/atividade2_.md b/lectures/oo/exercicio2/atividade2_.md index 33d6cfd..42e9a7e 100644 --- a/lectures/oo/exercicio2/atividade2_.md +++ b/lectures/oo/exercicio2/atividade2_.md @@ -43,7 +43,26 @@ Ao conjunto de valores que os atributos de um objeto armazena em um instante, d 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.

- +**Questão 2:** +

+a)**F**. + "Dois objetos instanciados através do método construtor padrão terão o mesmo estado, entretanto, suas referências não serão iguais."
+Os objetos serem estanciados através do mesmo método construtor apenas implica em terem o mesmo estado, mas não em referenciarem o mesmo objeto. + +b)**F**. + "Uma classe pode ter vários métodos construtores alternativos para instanciação de seus objetos."
+Uma Classe pode ter quantos métodos construtores alternativos quiser. + +c)**V**. + "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)**F**. + "Em Java, o operador .(ponto) serve para acessar os métodos e os atributos de um objeto".
+Serve para acessar ambos, atributo e método. + +e)**F**. +Em Java não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo. +

## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From e49978a8f4921e3620a339a8c169cfc307a6d75f Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:32:43 -0300 Subject: [PATCH 46/65] =?UTF-8?q?Quest=C3=A3o3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2_.md | 121 ++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2_.md b/lectures/oo/exercicio2/atividade2_.md index 42e9a7e..77e11ce 100644 --- a/lectures/oo/exercicio2/atividade2_.md +++ b/lectures/oo/exercicio2/atividade2_.md @@ -12,6 +12,19 @@ layout: default Atividade para realizar em dupla e entregar via GitHub. Uma entrega por dupla. Prazo para entrega: ~~4/4/2017~~ 10/04/2017, 23:59:59. +--- +title: Exercício prático +layout: default +--- + +### UnB - Universidade de Brasilia +### FGA - Faculdade do Gama +### OO - Orientação por objetos +------ + +Atividade para realizar em dupla e entregar via GitHub. Uma entrega por dupla. +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 @@ -63,6 +76,114 @@ Serve para acessar ambos, atributo e método. e)**F**. Em Java não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo.

+**Questão 3:**   +```java +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*Classe do Drone*/ +package drone; + +public class Drone { + int n_de_helices; + String marca; + String modelo; + String camera; + int vel_vert; + int vel_hor; + int vel_vert_max; + int vel_hor_max; + int autonomia_bateria; + int distancia_max; + boolean estado_camera; + + public Drone(){}; + + public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d){ + marca = m; + modelo = model; + n_de_helices = n_hel; + camera = cam; + vel_vert_max = vel_vert; + vel_hor_max = vel_hor; + autonomia_bateria = auton; + distancia_max = d; + } + + public void aumentar_vel_vertical(){ + if(vel_vert0){ + vel_vert--; + } + } + + public void aumentar_vel_horizontal(){ + if(vel_hor0){ + vel_hor--; + } + } + + public boolean iniciar_interromper_gravacao(){ + estado_camera = !estado_camera; + return estado_camera; + } + + public void diminuir_vel_max(){ + if(autonomia_bateria < 5){ + vel_hor_max = vel_hor_max/2; + vel_vert_max = vel_vert_max/2; + } + } + + public void imprime_estados(){ + System.out.printf("Marca %s\n", marca); + System.out.printf("Modelo %s\n", modelo); + System.out.printf("Número de hélices = %d\n", n_de_helices); + System.out.printf("Câmera = %s\n", camera); + System.out.printf("Vel.vertical.atual = %d m/s\n", vel_vert); + System.out.printf("Vel.vertical.máx = %d m/s\n", vel_vert_max); + System.out.printf("Vel.horizontal.atual = %d m/s\n", vel_hor); + System.out.printf("Vel.horizontal.máx = %d m/s\n", vel_hor_max); + System.out.printf("Autonomia bateria = %d minutos\n", autonomia_bateria); + System.out.printf("Distância máxima = %d metros\n", distancia_max); + if(estado_camera == false){ + System.out.printf("Estado da camera = Desligada\n"); + } + else{ + System.out.printf("Estado da camera = Ligada\n"); + } + System.out.println(""); + } + +} +/////////////////////////////////////////////////////////////////////////////////////////////////////// +``` +
+Diagrama de Classe- +
+ + + +## Referências: +\[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 + + + +--- +*Última modificação: 3 de abril de 2017, 22:52.* + + + +[eckDavid]: http://math.hws.edu/javanotes/ ## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From 062e1aa9dcd732408125a88f7e4bfe3cdd43a43f Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:33:28 -0300 Subject: [PATCH 47/65] =?UTF-8?q?Quest=C3=A3o4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2_.md | 131 ++++++++++++++++++++++---- 1 file changed, 112 insertions(+), 19 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2_.md b/lectures/oo/exercicio2/atividade2_.md index 77e11ce..8bbf5c8 100644 --- a/lectures/oo/exercicio2/atividade2_.md +++ b/lectures/oo/exercicio2/atividade2_.md @@ -1,18 +1,5 @@ ---- -title: Exercício prático -layout: default ---- - -### UnB - Universidade de Brasilia -### FGA - Faculdade do Gama -### OO - Orientação por objetos ------- - -Atividade para realizar em dupla e entregar via GitHub. Uma entrega por dupla. -Prazo para entrega: ~~4/4/2017~~ 10/04/2017, 23:59:59. - ---- +---- title: Exercício prático layout: default --- @@ -171,19 +158,125 @@ public class Drone { Diagrama de Classe-
+**Questão 4:** +```java +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*MAIN*/ -## Referências: -\[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 +package drone; + +public class Main { + public static void main(String[] args) { + Drone drone1, drone2, drone3, drone4; + drone1 = new Drone("Hubsan", "X4 mini", 4, "SD", 10, 10, 7, 150); + drone2 = new Drone("Hubsan", "H501S X4 FPV", 4, "HD", 12, 12, 20, 1000); + drone3 = new Drone("DJI", "Mavic Pro", 4, "UHD", 16, 16, 27, 13000); + drone4 = new Drone("DJI", "Spreading Wings", 8, "SUHD", 16, 16, 15, 13000); + + drone1.imprime_estados(); + drone2.imprime_estados(); + drone3.imprime_estados(); + drone4.imprime_estados(); + } + +} +/////////////////////////////////////////////////////////////////////////////////////////////////////// ---- -*Última modificação: 3 de abril de 2017, 22:52.* +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*Classe Drone*/ +package drone; + +public class Drone { + int n_de_helices; + String marca; + String modelo; + String camera; + int vel_vert; + int vel_hor; + int vel_vert_max; + int vel_hor_max; + int autonomia_bateria; + int distancia_max; + boolean estado_camera; + + public Drone(){}; + + public void aumentar_vel_vertical(){ + if(vel_vert0){ + vel_vert--; + } + } + + public void aumentar_vel_horizontal(){ + if(vel_hor0){ + vel_hor--; + } + } + + public boolean iniciar_interromper_gravacao(){ + estado_camera = !estado_camera; + return estado_camera; + } + + public void diminuir_vel_max(){ + if(autonomia_bateria < 5){ + vel_hor_max = vel_hor_max/2; + vel_vert_max = vel_vert_max/2; + } + } + + public void imprime_estados(){ + System.out.printf("Marca %s\n", marca); + System.out.printf("Modelo %s\n", modelo); + System.out.printf("Número de hélices = %d\n", n_de_helices); + System.out.printf("Câmera = %s\n", camera); + System.out.printf("Vel.vertical.atual = %d m/s\n", vel_vert); + System.out.printf("Vel.vertical.máx = %d m/s\n", vel_vert_max); + System.out.printf("Vel.horizontal.atual = %d m/s\n", vel_hor); + System.out.printf("Vel.horizontal.máx = %d m/s\n", vel_hor_max); + System.out.printf("Autonomia bateria = %d minutos\n", autonomia_bateria); + System.out.printf("Distância máxima = %d metros\n", distancia_max); + if(estado_camera == false){ + System.out.printf("Estado da camera = Desligada\n"); + } + else{ + System.out.printf("Estado da camera = Ligada\n"); + } + System.out.println(""); + } + + public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d){ + marca = m; + modelo = model; + n_de_helices = n_hel; + camera = cam; + vel_vert_max = vel_vert; + vel_hor_max = vel_hor; + autonomia_bateria = auton; + distancia_max = d; + } +} +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +``` -[eckDavid]: http://math.hws.edu/javanotes/ ## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From 1f10c8c34c1830e26842461227b874d69487d72d Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:34:15 -0300 Subject: [PATCH 48/65] =?UTF-8?q?Quest=C3=A3o5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2_.md | 184 +++++++++++++++++++++++++- 1 file changed, 182 insertions(+), 2 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2_.md b/lectures/oo/exercicio2/atividade2_.md index 8bbf5c8..aa5a757 100644 --- a/lectures/oo/exercicio2/atividade2_.md +++ b/lectures/oo/exercicio2/atividade2_.md @@ -1,5 +1,4 @@ - ----- +--- title: Exercício prático layout: default --- @@ -278,6 +277,187 @@ public class Drone { ``` +**Questão 5:** + +```java +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*MAIN*/ + +package drone; +public class Main { + + public static void main(String[] args) { + Drone drone1; + ControleRemoto controle1; + drone1 = new Drone("Hubsan", "X4 mini", 4, "SD", 10, 10, 7, 150, 1000); + drone1.imprime_estados();/*Estado incial do drone*/ + + controle1 = new ControleRemoto(); + + controle1.x = drone1; /*Controle está conectado ao drone1*/ + controle1.alcance = 10000; /*10km*/ + controle1.nivel_bateria = 100; /*Bateria está 100%*/ + controle1.aumentar_vel_vertical(); + controle1.aumentar_vel_vertical(); + controle1.aumentar_vel_horizontal(); + controle1.iniciar_interromper_gravacao(); + + drone1.imprime_estados();/*Estado depois de alterar as velocidades e + iniciar a gravação*/ + + drone1.distancia = 10005; /*Maior do que o alcance do controle, não + altera os estados*/ + controle1.aumentar_vel_horizontal(); + controle1.aumentar_vel_horizontal(); + controle1.aumentar_vel_vertical(); + controle1.aumentar_vel_vertical(); + + drone1.imprime_estados();/*Estado depois da tentativa de alteração com a + distancia do drone1 maior do que o alcance do controle remoto*/ + } + +} +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*Classe Drone*/ + +package drone; + + +public class Drone { + int n_de_helices; + String marca; + String modelo; + String camera; + int vel_vert; + int vel_hor; + int vel_vert_max; + int vel_hor_max; + int autonomia_bateria; + int distancia; + int distancia_max; + boolean estado_camera; + + public Drone(){}; + + public void aumentar_vel_vertical(){ + if(vel_vert0){ + vel_vert--; + } + } + + public void aumentar_vel_horizontal(){ + if(vel_hor0){ + vel_hor--; + } + } + + public boolean iniciar_interromper_gravacao(){ + estado_camera = !estado_camera; + return estado_camera; + } + + public void diminuir_vel_max(){ + if(autonomia_bateria < 5){ + vel_hor_max = vel_hor_max/2; + vel_vert_max = vel_vert_max/2; + } + } + + public void imprime_estados(){ + System.out.printf("Marca %s\n", marca); + System.out.printf("Modelo %s\n", modelo); + System.out.printf("Número de hélices = %d\n", n_de_helices); + System.out.printf("Câmera = %s\n", camera); + System.out.printf("Vel.vertical.atual = %d m/s\n", vel_vert); + System.out.printf("Vel.vertical.máx = %d m/s\n", vel_vert_max); + System.out.printf("Vel.horizontal.atual = %d m/s\n", vel_hor); + System.out.printf("Vel.horizontal.máx = %d m/s\n", vel_hor_max); + System.out.printf("Autonomia bateria = %d minutos\n", autonomia_bateria); + System.out.printf("Distância máxima = %d metros\n", distancia_max); + if(estado_camera == false){ + System.out.printf("Estado da camera = Desligada\n"); + } + else{ + System.out.printf("Estado da camera = Ligada\n"); + } + System.out.println(""); + } + + public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d, int dist){ + marca = m; + modelo = model; + n_de_helices = n_hel; + camera = cam; + vel_vert_max = vel_vert; + vel_hor_max = vel_hor; + autonomia_bateria = auton; + distancia_max = d; + distancia = dist; + } +} + +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*Classe Controle*/ + + +package drone; + +public class ControleRemoto { + Drone x; + int autonomia_bateria; + int nivel_bateria; + int alcance; + + public void aumentar_vel_vertical(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.aumentar_vel_vertical(); + } + } + + public void diminuir_vel_vertical(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.diminuir_vel_vertical(); + } + } + + public void aumentar_vel_horizontal(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.aumentar_vel_horizontal(); + } + } + + public void diminuir_vel_horizontal(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.diminuir_vel_horizontal(); + } + } + + public boolean iniciar_interromper_gravacao(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.iniciar_interromper_gravacao(); + } + return x.estado_camera; + } +} +/////////////////////////////////////////////////////////////////////////////////////////////////////// +``` + ## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From 8e33fee27f09f979ae020b4eb9914a7b47ea0c62 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:35:01 -0300 Subject: [PATCH 49/65] =?UTF-8?q?Quest=C3=A3o6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2_.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2_.md b/lectures/oo/exercicio2/atividade2_.md index aa5a757..4af4113 100644 --- a/lectures/oo/exercicio2/atividade2_.md +++ b/lectures/oo/exercicio2/atividade2_.md @@ -458,6 +458,27 @@ public class ControleRemoto { /////////////////////////////////////////////////////////////////////////////////////////////////////// ``` +**Questão 6:** +

+*a)*
+Errado! a1 e a2 nem se quer são referências, são atributos da classe Questao6
+
+*b)*
+Estados de q1:
+a1= 0 a2 = 0.0 a3 = null a4 = false
+Estados de q2:
+a1= 0 a2 = 0.0 a3 = null a4 = false
+Estados de q3:
+a1= 1 a2 = 1.0 a3 = "null" a4 = false
+
+*c)*
+False
+True
+False
+True
+True
+False
+

## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From e781b976f4e42e448a456652960e9451aae068cc Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:35:33 -0300 Subject: [PATCH 50/65] =?UTF-8?q?Quest=C3=A3o7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2_.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2_.md b/lectures/oo/exercicio2/atividade2_.md index 4af4113..ef3089e 100644 --- a/lectures/oo/exercicio2/atividade2_.md +++ b/lectures/oo/exercicio2/atividade2_.md @@ -479,6 +479,15 @@ True
True
False


+ +**Questão 7:** +

+Nome: André
Curso: &c1
Data de nascimento: 23/2/1983

+Nome: Maria
Curso: &c2
Data de nascimento: 27/5/1994

+Nome: Junior
Curso: &c1
Data de nascimento: 16/11/1995

+False
False
True +

+ ## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From ebf0ca9af540037af3b805bef9e33a245ee2d617 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:36:06 -0300 Subject: [PATCH 51/65] =?UTF-8?q?Quest=C3=A3o8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2_.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2_.md b/lectures/oo/exercicio2/atividade2_.md index ef3089e..605babc 100644 --- a/lectures/oo/exercicio2/atividade2_.md +++ b/lectures/oo/exercicio2/atividade2_.md @@ -488,6 +488,28 @@ Nome: Junior
Curso: &c1
Data de nascimento: 16/11/1995

False
False
True

+**Questão 8:** +

+Impressão do Garbage collector:
+Esse objeto ALUNO vai ser destruido.
+Detalhes do objeto:
+
+Nome: Maria
+Curso: &c2
+Data de nascimento: 27/5/1994
+Esse CURSO vai ser destruido.
+Detalhes do objeto:
+
+Nome do curso: Engenharia de Software
+Codigo: 1
+Carga horaria: 240
+Esse objeto ALUNO vai ser destruido.
+Detalhes do objeto:
+
+Nome: Andre
+Curso: &c1
+Data de nascimento: 23/2/1983
+

## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From 49997a79e604aa14cf137b6f6c5d41f0cdd23613 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:36:34 -0300 Subject: [PATCH 52/65] =?UTF-8?q?Quest=C3=A3o9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2_.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2_.md b/lectures/oo/exercicio2/atividade2_.md index 605babc..cdeb29c 100644 --- a/lectures/oo/exercicio2/atividade2_.md +++ b/lectures/oo/exercicio2/atividade2_.md @@ -510,6 +510,30 @@ Nome: Andre
Curso: &c1
Data de nascimento: 23/2/1983


+**Questão 9:** +```java +package questao9; +public class Principal { + public static void main(String[] args) { + Curso c1, c2; + Aluno a1, a2, a3; + + c2 = new Curso(2, "Engenharia Eletrônica", 257); + + a1 = new Aluno("Andre", c1, 13, 23, 02, 1983); + a2 = new Aluno("Maria", c2, 5, 27, 5, 1994); + + /*Errado! Curso é o nome da classe e não do objeto.*/ Curso.obterDetalhes(); + /*Errado! O objeto c2 não possui o atributo matrícula.*/ c2.matricula = 20; + /*Errado! Curso é o nome da classe e não do objeto.*/ Curso.nome = "Ciência da computação"; + /*Errado! O identificador c1 não chegou a ser instanciado como um objeto.*/ c1.codigo = 21; + /*Errado! Aluno é o nome da classe e não do objeto.*/ Aluno.obterDetalhes(); + /*Errado! A classe aluno no possui o método carga horária e o a3 não foi instanciado.*/ a3.cargaHoraria() = 220; + } +} +``` + + ## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From 1e44176ddefb715bbad563975aedad75fe07d5cc Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:37:03 -0300 Subject: [PATCH 53/65] =?UTF-8?q?Quest=C3=A3o10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2_.md | 132 ++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2_.md b/lectures/oo/exercicio2/atividade2_.md index cdeb29c..dcb0216 100644 --- a/lectures/oo/exercicio2/atividade2_.md +++ b/lectures/oo/exercicio2/atividade2_.md @@ -534,6 +534,138 @@ public class Principal { ``` +**Questão 10:** +

+a)
+```java +package questão.pkg10; + + +public class Turma { + + int codTurma; + int numVagasTotal; + int numVagasLivres; + int numVagasOcupadas; + String diasOcorrencia; + String horariosOcorrencia; + Disciplina disc; + + Turma(){ + + } + + Turma(int c, int nT, String d, String h, Disciplina D){ + codTurma = c; + numVagasTotal = nT; + diasOcorrencia = d; + horariosOcorrencia = h; + disc = D; + numVagasOcupadas = 0; + numVagasLivres = numVagasTotal; + } + + public void Matricula(){ + if(numVagasLivres > numVagasOcupadas){ + numVagasLivres--; + numVagasOcupadas++; + } + } + + public String obterDetalhes(){ + String resposta = ""; + resposta += "Turma " + codTurma + " da disciplina de " + disc.nome + '\n'; + resposta += "Numero total de vagas: " + numVagasTotal + '\n'; + resposta += "Numero de vagas livres: " + numVagasLivres + '\n'; + resposta += "Numero de vagas ocupadas: " + numVagasOcupadas + '\n'; + resposta += "Dias de ocorrencias: " + diasOcorrencia + '\n'; + resposta += "Horarios de ocorrencia: " + horariosOcorrencia + '\n'; + + return resposta; + } +} + +``` + +
+b)
+ +```java + +package questão.pkg10; + + +public class Questão10 { + public static void main(String[] args) { + Curso c1; + Disciplina d1,d2; + Turma t1, t2; + + String resposta; + + c1 = new Curso(1, "Engenharia de Software", 240); + + d1 = new Disciplina(1,4, "Orientação a Objetos","FGA", c1); + d2 = new Disciplina(2,4, "Desenvolvimento Avançado de Software","FGA", c1); + + t1 = new Turma(1, 46, "Quartas e Sextas", "12:00 - 16:00", d1); + t2 = new Turma(1, 30, "Quartas e Sextas", "16:00 - 18:00", d2); + + resposta = t1.obterDetalhes(); + System.out.println(resposta); + + resposta = t2.obterDetalhes(); + System.out.println(resposta); + + } + +} + +``` + +
+
+c)O código usado aqui é o mesmo do item anterior, pois, para haver uma Turma, precisa de uma Disciplina relacionada à esta Turma. E do mesmo modo, se precisa de um Curso relacionado à disciplina. Assim, não haveria como instanciar um objeto do tipo Turma sem que antes houvesse um do tipo Disciplina e do tipo Curso. Logo, ambos os itens geram a mesma resposta. +
+
+d)
+ +```java +package questão.pkg10; + +public class Questão10 { + public static void main(String[] args) { + Curso c1,c2; + Disciplina d1,d2; + Turma t1, t2; + Aluno a1, a2, a3; + + String resposta; + + c1 = new Curso(1, "Engenharia de Software", 240); + c2 = new Curso(2, "Engenharia Eletrônica", 257); + + d1 = new Disciplina(1,4, "Orientação a Objetos","FGA", c1); + d2 = new Disciplina(2,4, "Desenvolvimento Avançado de Software","FGA", c1); + + t1 = new Turma(1, 46, "Quartas e Sextas", "12:00 - 16:00", d1); + t2 = new Turma(1, 30, "Quartas e Sextas", "16:00 - 18:00", d2); + + a1 = new Aluno("Andre", c1, 13, 23, 02, 1983); + a2 = new Aluno("Maria", c2, 5, 27, 5, 1994); + a3 = new Aluno("Junior", c1, 70, 16, 11, 1995); + + /* Aqui as vagas das turmas estão sendo diminuidas, logo, os alunos estão sendo matriculados */ + a1.Matricula(t1); + a2.Matricula(t1); + a3.Matricula(t2); + + + } +} + +``` + ## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From a9d579e3692f6bbd41c3317142a3c5607fb1e3e4 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:53:11 -0300 Subject: [PATCH 54/65] Limpando comits (Despreze os commits anteriores) --- lectures/oo/exercicio2/atividade2.md | 678 --------------------------- 1 file changed, 678 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index dcb0216..8b13789 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -1,679 +1 @@ ---- -title: Exercício prático -layout: default ---- -### UnB - Universidade de Brasilia -### FGA - Faculdade do Gama -### OO - Orientação por objetos ------- - -Atividade para realizar em dupla e entregar via GitHub. Uma entrega por dupla. -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 classe é uma entidade que contém atributos e métodos, que são responsáveis por descrever objetos ou mais precisamente para criar objetos. Ela é um tipo de fábrica para a construção de objetos. -* objeto - -Objetos são invocações das classes, são eles que dão vida à classe. Objeto é uma instância da classe, ou seja, a classe é uma forma para o objeto. Tratando de um bolo, a classe é a forma do bolo e o bolo é um objeto que pode ser de chocolate, laranja ou do que quer que você queira, e cada bolo que é feito é um novo objeto. -* elementos de classe - -Os elementos de uma classe são os atributos e métodos que cada classe possui. - -* atributos - -Atributos nada mais são do que as variáveis contidas em uma classe ou em um objeto. São as principais característica de um objeto quando eu o instancio através de uma classe. Por exemplo, a classe Aluno tem como objetos instanciados Pedro e Matheus, ambos possuem uma matrícula, nota, quantidade de faltas, etc. Cada uma dessas características são chamadas de atributos. -* métodos - -Métodos são subrotinas que tem como estrutura o modificador, o tipo de retorno e a lista de parâmetros. Métodos são responsáveis por executar mudanças nos valores dos atributos dos objetos apenas com a chamada do mesmo, não sendo necessário que a main repita várias vezes o mesmo passo. Esses métodos estão presentes em cada classe e seus objetos herdam esses métodos, podendo ser ilimitados. -* método construtor padrão - -O construtor padrão também é uma subrotina, porém é uma subrotina especial, com o papel de alocar memória para o objeto e inicializar os atributos, retornando a referência para o objeto. Toda classe tem um construtor padrão assim que ela é criada, mesmo se o programador não declarar ela o sistema irá providenciar um método construtor padrão. -* método construtor alternativo - -O método construtor alternativo, assim, como o padrão, também aloca um espaço na memória para o objeto, a diferença é que a inicialização dos atributos é feita de acordo com uma passagem de parâmetros. Diferente do método padrão, esse método pode atribuir quaisquer valores para os diversos atributos do objeto, bastanto apenas que sejam passados esses valores como parâmetro na chamado do método alternativo. -* estado de um objeto - -Ao conjunto de valores que os atributos de um objeto armazena em um instante, dá-se o nome de estado do objeto -* retenção de estado - -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. -

-**Questão 2:** -

-a)**F**. - "Dois objetos instanciados através do método construtor padrão terão o mesmo estado, entretanto, suas referências não serão iguais."
-Os objetos serem estanciados através do mesmo método construtor apenas implica em terem o mesmo estado, mas não em referenciarem o mesmo objeto. - -b)**F**. - "Uma classe pode ter vários métodos construtores alternativos para instanciação de seus objetos."
-Uma Classe pode ter quantos métodos construtores alternativos quiser. - -c)**V**. - "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)**F**. - "Em Java, o operador .(ponto) serve para acessar os métodos e os atributos de um objeto".
-Serve para acessar ambos, atributo e método. - -e)**F**. -Em Java não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo. -

-**Questão 3:**   -```java -/////////////////////////////////////////////////////////////////////////////////////////////////////// -/*Classe do Drone*/ -package drone; - -public class Drone { - int n_de_helices; - String marca; - String modelo; - String camera; - int vel_vert; - int vel_hor; - int vel_vert_max; - int vel_hor_max; - int autonomia_bateria; - int distancia_max; - boolean estado_camera; - - public Drone(){}; - - public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d){ - marca = m; - modelo = model; - n_de_helices = n_hel; - camera = cam; - vel_vert_max = vel_vert; - vel_hor_max = vel_hor; - autonomia_bateria = auton; - distancia_max = d; - } - - public void aumentar_vel_vertical(){ - if(vel_vert0){ - vel_vert--; - } - } - - public void aumentar_vel_horizontal(){ - if(vel_hor0){ - vel_hor--; - } - } - - public boolean iniciar_interromper_gravacao(){ - estado_camera = !estado_camera; - return estado_camera; - } - - public void diminuir_vel_max(){ - if(autonomia_bateria < 5){ - vel_hor_max = vel_hor_max/2; - vel_vert_max = vel_vert_max/2; - } - } - - public void imprime_estados(){ - System.out.printf("Marca %s\n", marca); - System.out.printf("Modelo %s\n", modelo); - System.out.printf("Número de hélices = %d\n", n_de_helices); - System.out.printf("Câmera = %s\n", camera); - System.out.printf("Vel.vertical.atual = %d m/s\n", vel_vert); - System.out.printf("Vel.vertical.máx = %d m/s\n", vel_vert_max); - System.out.printf("Vel.horizontal.atual = %d m/s\n", vel_hor); - System.out.printf("Vel.horizontal.máx = %d m/s\n", vel_hor_max); - System.out.printf("Autonomia bateria = %d minutos\n", autonomia_bateria); - System.out.printf("Distância máxima = %d metros\n", distancia_max); - if(estado_camera == false){ - System.out.printf("Estado da camera = Desligada\n"); - } - else{ - System.out.printf("Estado da camera = Ligada\n"); - } - System.out.println(""); - } - -} -/////////////////////////////////////////////////////////////////////////////////////////////////////// -``` -
-Diagrama de Classe- -
- -**Questão 4:** -```java - -/////////////////////////////////////////////////////////////////////////////////////////////////////// -/*MAIN*/ - -package drone; - -public class Main { - public static void main(String[] args) { - Drone drone1, drone2, drone3, drone4; - drone1 = new Drone("Hubsan", "X4 mini", 4, "SD", 10, 10, 7, 150); - drone2 = new Drone("Hubsan", "H501S X4 FPV", 4, "HD", 12, 12, 20, 1000); - drone3 = new Drone("DJI", "Mavic Pro", 4, "UHD", 16, 16, 27, 13000); - drone4 = new Drone("DJI", "Spreading Wings", 8, "SUHD", 16, 16, 15, 13000); - - drone1.imprime_estados(); - drone2.imprime_estados(); - drone3.imprime_estados(); - drone4.imprime_estados(); - } - -} - - -/////////////////////////////////////////////////////////////////////////////////////////////////////// - - -/////////////////////////////////////////////////////////////////////////////////////////////////////// -/*Classe Drone*/ - -package drone; - -public class Drone { - int n_de_helices; - String marca; - String modelo; - String camera; - int vel_vert; - int vel_hor; - int vel_vert_max; - int vel_hor_max; - int autonomia_bateria; - int distancia_max; - boolean estado_camera; - - public Drone(){}; - - public void aumentar_vel_vertical(){ - if(vel_vert0){ - vel_vert--; - } - } - - public void aumentar_vel_horizontal(){ - if(vel_hor0){ - vel_hor--; - } - } - - public boolean iniciar_interromper_gravacao(){ - estado_camera = !estado_camera; - return estado_camera; - } - - public void diminuir_vel_max(){ - if(autonomia_bateria < 5){ - vel_hor_max = vel_hor_max/2; - vel_vert_max = vel_vert_max/2; - } - } - - public void imprime_estados(){ - System.out.printf("Marca %s\n", marca); - System.out.printf("Modelo %s\n", modelo); - System.out.printf("Número de hélices = %d\n", n_de_helices); - System.out.printf("Câmera = %s\n", camera); - System.out.printf("Vel.vertical.atual = %d m/s\n", vel_vert); - System.out.printf("Vel.vertical.máx = %d m/s\n", vel_vert_max); - System.out.printf("Vel.horizontal.atual = %d m/s\n", vel_hor); - System.out.printf("Vel.horizontal.máx = %d m/s\n", vel_hor_max); - System.out.printf("Autonomia bateria = %d minutos\n", autonomia_bateria); - System.out.printf("Distância máxima = %d metros\n", distancia_max); - if(estado_camera == false){ - System.out.printf("Estado da camera = Desligada\n"); - } - else{ - System.out.printf("Estado da camera = Ligada\n"); - } - System.out.println(""); - } - - public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d){ - marca = m; - modelo = model; - n_de_helices = n_hel; - camera = cam; - vel_vert_max = vel_vert; - vel_hor_max = vel_hor; - autonomia_bateria = auton; - distancia_max = d; - } -} -/////////////////////////////////////////////////////////////////////////////////////////////////////// - -``` - - -**Questão 5:** - -```java -/////////////////////////////////////////////////////////////////////////////////////////////////////// -/*MAIN*/ - -package drone; -public class Main { - - public static void main(String[] args) { - Drone drone1; - ControleRemoto controle1; - drone1 = new Drone("Hubsan", "X4 mini", 4, "SD", 10, 10, 7, 150, 1000); - drone1.imprime_estados();/*Estado incial do drone*/ - - controle1 = new ControleRemoto(); - - controle1.x = drone1; /*Controle está conectado ao drone1*/ - controle1.alcance = 10000; /*10km*/ - controle1.nivel_bateria = 100; /*Bateria está 100%*/ - controle1.aumentar_vel_vertical(); - controle1.aumentar_vel_vertical(); - controle1.aumentar_vel_horizontal(); - controle1.iniciar_interromper_gravacao(); - - drone1.imprime_estados();/*Estado depois de alterar as velocidades e - iniciar a gravação*/ - - drone1.distancia = 10005; /*Maior do que o alcance do controle, não - altera os estados*/ - controle1.aumentar_vel_horizontal(); - controle1.aumentar_vel_horizontal(); - controle1.aumentar_vel_vertical(); - controle1.aumentar_vel_vertical(); - - drone1.imprime_estados();/*Estado depois da tentativa de alteração com a - distancia do drone1 maior do que o alcance do controle remoto*/ - } - -} -/////////////////////////////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////////////////////////////// -/*Classe Drone*/ - -package drone; - - -public class Drone { - int n_de_helices; - String marca; - String modelo; - String camera; - int vel_vert; - int vel_hor; - int vel_vert_max; - int vel_hor_max; - int autonomia_bateria; - int distancia; - int distancia_max; - boolean estado_camera; - - public Drone(){}; - - public void aumentar_vel_vertical(){ - if(vel_vert0){ - vel_vert--; - } - } - - public void aumentar_vel_horizontal(){ - if(vel_hor0){ - vel_hor--; - } - } - - public boolean iniciar_interromper_gravacao(){ - estado_camera = !estado_camera; - return estado_camera; - } - - public void diminuir_vel_max(){ - if(autonomia_bateria < 5){ - vel_hor_max = vel_hor_max/2; - vel_vert_max = vel_vert_max/2; - } - } - - public void imprime_estados(){ - System.out.printf("Marca %s\n", marca); - System.out.printf("Modelo %s\n", modelo); - System.out.printf("Número de hélices = %d\n", n_de_helices); - System.out.printf("Câmera = %s\n", camera); - System.out.printf("Vel.vertical.atual = %d m/s\n", vel_vert); - System.out.printf("Vel.vertical.máx = %d m/s\n", vel_vert_max); - System.out.printf("Vel.horizontal.atual = %d m/s\n", vel_hor); - System.out.printf("Vel.horizontal.máx = %d m/s\n", vel_hor_max); - System.out.printf("Autonomia bateria = %d minutos\n", autonomia_bateria); - System.out.printf("Distância máxima = %d metros\n", distancia_max); - if(estado_camera == false){ - System.out.printf("Estado da camera = Desligada\n"); - } - else{ - System.out.printf("Estado da camera = Ligada\n"); - } - System.out.println(""); - } - - public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d, int dist){ - marca = m; - modelo = model; - n_de_helices = n_hel; - camera = cam; - vel_vert_max = vel_vert; - vel_hor_max = vel_hor; - autonomia_bateria = auton; - distancia_max = d; - distancia = dist; - } -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////////////////////////////// -/*Classe Controle*/ - - -package drone; - -public class ControleRemoto { - Drone x; - int autonomia_bateria; - int nivel_bateria; - int alcance; - - public void aumentar_vel_vertical(){ - if(alcance >= x.distancia && nivel_bateria>0){ - x.aumentar_vel_vertical(); - } - } - - public void diminuir_vel_vertical(){ - if(alcance >= x.distancia && nivel_bateria>0){ - x.diminuir_vel_vertical(); - } - } - - public void aumentar_vel_horizontal(){ - if(alcance >= x.distancia && nivel_bateria>0){ - x.aumentar_vel_horizontal(); - } - } - - public void diminuir_vel_horizontal(){ - if(alcance >= x.distancia && nivel_bateria>0){ - x.diminuir_vel_horizontal(); - } - } - - public boolean iniciar_interromper_gravacao(){ - if(alcance >= x.distancia && nivel_bateria>0){ - x.iniciar_interromper_gravacao(); - } - return x.estado_camera; - } -} -/////////////////////////////////////////////////////////////////////////////////////////////////////// -``` - -**Questão 6:** -

-*a)*
-Errado! a1 e a2 nem se quer são referências, são atributos da classe Questao6
-
-*b)*
-Estados de q1:
-a1= 0 a2 = 0.0 a3 = null a4 = false
-Estados de q2:
-a1= 0 a2 = 0.0 a3 = null a4 = false
-Estados de q3:
-a1= 1 a2 = 1.0 a3 = "null" a4 = false
-
-*c)*
-False
-True
-False
-True
-True
-False
-

- -**Questão 7:** -

-Nome: André
Curso: &c1
Data de nascimento: 23/2/1983

-Nome: Maria
Curso: &c2
Data de nascimento: 27/5/1994

-Nome: Junior
Curso: &c1
Data de nascimento: 16/11/1995

-False
False
True -

- -**Questão 8:** -

-Impressão do Garbage collector:
-Esse objeto ALUNO vai ser destruido.
-Detalhes do objeto:
-
-Nome: Maria
-Curso: &c2
-Data de nascimento: 27/5/1994
-Esse CURSO vai ser destruido.
-Detalhes do objeto:
-
-Nome do curso: Engenharia de Software
-Codigo: 1
-Carga horaria: 240
-Esse objeto ALUNO vai ser destruido.
-Detalhes do objeto:
-
-Nome: Andre
-Curso: &c1
-Data de nascimento: 23/2/1983
-

-**Questão 9:** -```java -package questao9; -public class Principal { - public static void main(String[] args) { - Curso c1, c2; - Aluno a1, a2, a3; - - c2 = new Curso(2, "Engenharia Eletrônica", 257); - - a1 = new Aluno("Andre", c1, 13, 23, 02, 1983); - a2 = new Aluno("Maria", c2, 5, 27, 5, 1994); - - /*Errado! Curso é o nome da classe e não do objeto.*/ Curso.obterDetalhes(); - /*Errado! O objeto c2 não possui o atributo matrícula.*/ c2.matricula = 20; - /*Errado! Curso é o nome da classe e não do objeto.*/ Curso.nome = "Ciência da computação"; - /*Errado! O identificador c1 não chegou a ser instanciado como um objeto.*/ c1.codigo = 21; - /*Errado! Aluno é o nome da classe e não do objeto.*/ Aluno.obterDetalhes(); - /*Errado! A classe aluno no possui o método carga horária e o a3 não foi instanciado.*/ a3.cargaHoraria() = 220; - } -} -``` - - -**Questão 10:** -

-a)
-```java -package questão.pkg10; - - -public class Turma { - - int codTurma; - int numVagasTotal; - int numVagasLivres; - int numVagasOcupadas; - String diasOcorrencia; - String horariosOcorrencia; - Disciplina disc; - - Turma(){ - - } - - Turma(int c, int nT, String d, String h, Disciplina D){ - codTurma = c; - numVagasTotal = nT; - diasOcorrencia = d; - horariosOcorrencia = h; - disc = D; - numVagasOcupadas = 0; - numVagasLivres = numVagasTotal; - } - - public void Matricula(){ - if(numVagasLivres > numVagasOcupadas){ - numVagasLivres--; - numVagasOcupadas++; - } - } - - public String obterDetalhes(){ - String resposta = ""; - resposta += "Turma " + codTurma + " da disciplina de " + disc.nome + '\n'; - resposta += "Numero total de vagas: " + numVagasTotal + '\n'; - resposta += "Numero de vagas livres: " + numVagasLivres + '\n'; - resposta += "Numero de vagas ocupadas: " + numVagasOcupadas + '\n'; - resposta += "Dias de ocorrencias: " + diasOcorrencia + '\n'; - resposta += "Horarios de ocorrencia: " + horariosOcorrencia + '\n'; - - return resposta; - } -} - -``` - -
-b)
- -```java - -package questão.pkg10; - - -public class Questão10 { - public static void main(String[] args) { - Curso c1; - Disciplina d1,d2; - Turma t1, t2; - - String resposta; - - c1 = new Curso(1, "Engenharia de Software", 240); - - d1 = new Disciplina(1,4, "Orientação a Objetos","FGA", c1); - d2 = new Disciplina(2,4, "Desenvolvimento Avançado de Software","FGA", c1); - - t1 = new Turma(1, 46, "Quartas e Sextas", "12:00 - 16:00", d1); - t2 = new Turma(1, 30, "Quartas e Sextas", "16:00 - 18:00", d2); - - resposta = t1.obterDetalhes(); - System.out.println(resposta); - - resposta = t2.obterDetalhes(); - System.out.println(resposta); - - } - -} - -``` - -
-
-c)O código usado aqui é o mesmo do item anterior, pois, para haver uma Turma, precisa de uma Disciplina relacionada à esta Turma. E do mesmo modo, se precisa de um Curso relacionado à disciplina. Assim, não haveria como instanciar um objeto do tipo Turma sem que antes houvesse um do tipo Disciplina e do tipo Curso. Logo, ambos os itens geram a mesma resposta. -
-
-d)
- -```java -package questão.pkg10; - -public class Questão10 { - public static void main(String[] args) { - Curso c1,c2; - Disciplina d1,d2; - Turma t1, t2; - Aluno a1, a2, a3; - - String resposta; - - c1 = new Curso(1, "Engenharia de Software", 240); - c2 = new Curso(2, "Engenharia Eletrônica", 257); - - d1 = new Disciplina(1,4, "Orientação a Objetos","FGA", c1); - d2 = new Disciplina(2,4, "Desenvolvimento Avançado de Software","FGA", c1); - - t1 = new Turma(1, 46, "Quartas e Sextas", "12:00 - 16:00", d1); - t2 = new Turma(1, 30, "Quartas e Sextas", "16:00 - 18:00", d2); - - a1 = new Aluno("Andre", c1, 13, 23, 02, 1983); - a2 = new Aluno("Maria", c2, 5, 27, 5, 1994); - a3 = new Aluno("Junior", c1, 70, 16, 11, 1995); - - /* Aqui as vagas das turmas estão sendo diminuidas, logo, os alunos estão sendo matriculados */ - a1.Matricula(t1); - a2.Matricula(t1); - a3.Matricula(t2); - - - } -} - -``` - -## Referências: -\[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 - - - ---- -*Última modificação: 3 de abril de 2017, 22:52.* - - - -[eckDavid]: http://math.hws.edu/javanotes/ From 71ca3f52a73d5938659b550b535e76ca8b5134bd Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 22:59:16 -0300 Subject: [PATCH 55/65] =?UTF-8?q?Quest=C3=A3o=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 58 ++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 8b13789..83d6d83 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -1 +1,59 @@ +Matheus Roberto 13/0126721 +
Pedro Kelvin 13/0129674 +--- +title: Exercício prático +layout: default +--- +### UnB - Universidade de Brasilia +### FGA - Faculdade do Gama +### OO - Orientação por objetos +------ + +Atividade para realizar em dupla e entregar via GitHub. Uma entrega por dupla. +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 classe é uma entidade que contém atributos e métodos, que são responsáveis por descrever objetos ou mais precisamente para criar objetos. Ela é um tipo de fábrica para a construção de objetos. +* objeto + +Objetos são invocações das classes, são eles que dão vida à classe. Objeto é uma instância da classe, ou seja, a classe é uma forma para o objeto. Tratando de um bolo, a classe é a forma do bolo e o bolo é um objeto que pode ser de chocolate, laranja ou do que quer que você queira, e cada bolo que é feito é um novo objeto. +* elementos de classe + +Os elementos de uma classe são os atributos e métodos que cada classe possui. + +* atributos + +Atributos nada mais são do que as variáveis contidas em uma classe ou em um objeto. São as principais característica de um objeto quando eu o instancio através de uma classe. Por exemplo, a classe Aluno tem como objetos instanciados Pedro e Matheus, ambos possuem uma matrícula, nota, quantidade de faltas, etc. Cada uma dessas características são chamadas de atributos. +* métodos + +Métodos são subrotinas que tem como estrutura o modificador, o tipo de retorno e a lista de parâmetros. Métodos são responsáveis por executar mudanças nos valores dos atributos dos objetos apenas com a chamada do mesmo, não sendo necessário que a main repita várias vezes o mesmo passo. Esses métodos estão presentes em cada classe e seus objetos herdam esses métodos, podendo ser ilimitados. +* método construtor padrão + +O construtor padrão também é uma subrotina, porém é uma subrotina especial, com o papel de alocar memória para o objeto e inicializar os atributos, retornando a referência para o objeto. Toda classe tem um construtor padrão assim que ela é criada, mesmo se o programador não declarar ela o sistema irá providenciar um método construtor padrão. +* método construtor alternativo + +O método construtor alternativo, assim, como o padrão, também aloca um espaço na memória para o objeto, a diferença é que a inicialização dos atributos é feita de acordo com uma passagem de parâmetros. Diferente do método padrão, esse método pode atribuir quaisquer valores para os diversos atributos do objeto, bastanto apenas que sejam passados esses valores como parâmetro na chamado do método alternativo. +* estado de um objeto + +Ao conjunto de valores que os atributos de um objeto armazena em um instante, dá-se o nome de estado do objeto +* retenção de estado + +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. +

+ + +## Referências: +\[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 + + + +--- +*Última modificação: 3 de abril de 2017, 22:52.* + + + +[eckDavid]: http://math.hws.edu/javanotes/ From d24f7ea09fe50b563afe21fde0abe600fc1d929a Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 23:01:15 -0300 Subject: [PATCH 56/65] Questao 1 --- lectures/oo/exercicio2/atividade2.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 83d6d83..c063387 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -1,5 +1,8 @@ Matheus Roberto 13/0126721
Pedro Kelvin 13/0129674 + +Atividade para realizar em dupla e entregar via GitHub. Uma entrega por dupla. +Prazo para entrega: ~~4/4/2017~~ 10/04/2017, 23:59:59. --- title: Exercício prático layout: default From e62aa099d91f039a9b06fcc3b0065db1c5060443 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 23:02:52 -0300 Subject: [PATCH 57/65] =?UTF-8?q?Quest=C3=A3o=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index c063387..8c0664b 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -8,6 +8,7 @@ title: Exercício prático layout: default --- +------ ### UnB - Universidade de Brasilia ### FGA - Faculdade do Gama ### OO - Orientação por objetos @@ -47,6 +48,26 @@ Ao conjunto de valores que os atributos de um objeto armazena em um instante, d 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.

+**Questão 2:** +

+a)**F**. + "Dois objetos instanciados através do método construtor padrão terão o mesmo estado, entretanto, suas referências não serão iguais."
+Os objetos serem estanciados através do mesmo método construtor apenas implica em terem o mesmo estado, mas não em referenciarem o mesmo objeto. + +b)**F**. + "Uma classe pode ter vários métodos construtores alternativos para instanciação de seus objetos."
+Uma Classe pode ter quantos métodos construtores alternativos quiser. + +c)**V**. + "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)**F**. + "Em Java, o operador .(ponto) serve para acessar os métodos e os atributos de um objeto".
+Serve para acessar ambos, atributo e método. + +e)**F**. +Em Java não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo. +

## Referências: From 4d151654a62c65edf4134f51dbd3955da879ffd0 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 23:03:48 -0300 Subject: [PATCH 58/65] =?UTF-8?q?Quest=C3=A3o=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 95 +++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 8c0664b..afb9162 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -8,7 +8,6 @@ title: Exercício prático layout: default --- ------- ### UnB - Universidade de Brasilia ### FGA - Faculdade do Gama ### OO - Orientação por objetos @@ -68,6 +67,100 @@ Serve para acessar ambos, atributo e método. e)**F**. Em Java não existe métodos destrutores, e sim o que acontece é o desreferenciamento de um objeto, e depois o Garbage Collector passa avaliando a memória e é executado, destruindo esse objeto. O método finalize() é implementado em cada Classe e é chamado assim que o GC está quase destruindo o objeto, ai ele executa as ultimas instruções antes de destrui-lo.

+**Questão 3:**   +```java +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*Classe do Drone*/ +package drone; + +public class Drone { + int n_de_helices; + String marca; + String modelo; + String camera; + int vel_vert; + int vel_hor; + int vel_vert_max; + int vel_hor_max; + int autonomia_bateria; + int distancia_max; + boolean estado_camera; + + public Drone(){}; + + public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d){ + marca = m; + modelo = model; + n_de_helices = n_hel; + camera = cam; + vel_vert_max = vel_vert; + vel_hor_max = vel_hor; + autonomia_bateria = auton; + distancia_max = d; + } + + public void aumentar_vel_vertical(){ + if(vel_vert0){ + vel_vert--; + } + } + + public void aumentar_vel_horizontal(){ + if(vel_hor0){ + vel_hor--; + } + } + + public boolean iniciar_interromper_gravacao(){ + estado_camera = !estado_camera; + return estado_camera; + } + + public void diminuir_vel_max(){ + if(autonomia_bateria < 5){ + vel_hor_max = vel_hor_max/2; + vel_vert_max = vel_vert_max/2; + } + } + + public void imprime_estados(){ + System.out.printf("Marca %s\n", marca); + System.out.printf("Modelo %s\n", modelo); + System.out.printf("Número de hélices = %d\n", n_de_helices); + System.out.printf("Câmera = %s\n", camera); + System.out.printf("Vel.vertical.atual = %d m/s\n", vel_vert); + System.out.printf("Vel.vertical.máx = %d m/s\n", vel_vert_max); + System.out.printf("Vel.horizontal.atual = %d m/s\n", vel_hor); + System.out.printf("Vel.horizontal.máx = %d m/s\n", vel_hor_max); + System.out.printf("Autonomia bateria = %d minutos\n", autonomia_bateria); + System.out.printf("Distância máxima = %d metros\n", distancia_max); + if(estado_camera == false){ + System.out.printf("Estado da camera = Desligada\n"); + } + else{ + System.out.printf("Estado da camera = Ligada\n"); + } + System.out.println(""); + } + +} +/////////////////////////////////////////////////////////////////////////////////////////////////////// +``` +
+Diagrama de Classe- +
## Referências: From 291ee47c9086d7ccf454978835f9e6a0a74f58ae Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 23:04:23 -0300 Subject: [PATCH 59/65] =?UTF-8?q?Quest=C3=A3o=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 118 +++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index afb9162..56bd9c8 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -162,6 +162,124 @@ public class Drone { Diagrama de Classe-
+**Questão 4:** +```java + +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*MAIN*/ + +package drone; + +public class Main { + public static void main(String[] args) { + Drone drone1, drone2, drone3, drone4; + drone1 = new Drone("Hubsan", "X4 mini", 4, "SD", 10, 10, 7, 150); + drone2 = new Drone("Hubsan", "H501S X4 FPV", 4, "HD", 12, 12, 20, 1000); + drone3 = new Drone("DJI", "Mavic Pro", 4, "UHD", 16, 16, 27, 13000); + drone4 = new Drone("DJI", "Spreading Wings", 8, "SUHD", 16, 16, 15, 13000); + + drone1.imprime_estados(); + drone2.imprime_estados(); + drone3.imprime_estados(); + drone4.imprime_estados(); + } + +} + + +/////////////////////////////////////////////////////////////////////////////////////////////////////// + + +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*Classe Drone*/ + +package drone; + +public class Drone { + int n_de_helices; + String marca; + String modelo; + String camera; + int vel_vert; + int vel_hor; + int vel_vert_max; + int vel_hor_max; + int autonomia_bateria; + int distancia_max; + boolean estado_camera; + + public Drone(){}; + + public void aumentar_vel_vertical(){ + if(vel_vert0){ + vel_vert--; + } + } + + public void aumentar_vel_horizontal(){ + if(vel_hor0){ + vel_hor--; + } + } + + public boolean iniciar_interromper_gravacao(){ + estado_camera = !estado_camera; + return estado_camera; + } + + public void diminuir_vel_max(){ + if(autonomia_bateria < 5){ + vel_hor_max = vel_hor_max/2; + vel_vert_max = vel_vert_max/2; + } + } + + public void imprime_estados(){ + System.out.printf("Marca %s\n", marca); + System.out.printf("Modelo %s\n", modelo); + System.out.printf("Número de hélices = %d\n", n_de_helices); + System.out.printf("Câmera = %s\n", camera); + System.out.printf("Vel.vertical.atual = %d m/s\n", vel_vert); + System.out.printf("Vel.vertical.máx = %d m/s\n", vel_vert_max); + System.out.printf("Vel.horizontal.atual = %d m/s\n", vel_hor); + System.out.printf("Vel.horizontal.máx = %d m/s\n", vel_hor_max); + System.out.printf("Autonomia bateria = %d minutos\n", autonomia_bateria); + System.out.printf("Distância máxima = %d metros\n", distancia_max); + if(estado_camera == false){ + System.out.printf("Estado da camera = Desligada\n"); + } + else{ + System.out.printf("Estado da camera = Ligada\n"); + } + System.out.println(""); + } + + public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d){ + marca = m; + modelo = model; + n_de_helices = n_hel; + camera = cam; + vel_vert_max = vel_vert; + vel_hor_max = vel_hor; + autonomia_bateria = auton; + distancia_max = d; + } +} +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +``` ## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From 5179a6c043b36d3a600a1f06abd64a5d446f9d57 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 23:05:20 -0300 Subject: [PATCH 60/65] =?UTF-8?q?Quest=C3=A3o=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 184 +++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 56bd9c8..2483004 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -281,6 +281,190 @@ public class Drone { ``` + +**Questão 5:** + +```java +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*MAIN*/ + +package drone; +public class Main { + + public static void main(String[] args) { + Drone drone1; + ControleRemoto controle1; + drone1 = new Drone("Hubsan", "X4 mini", 4, "SD", 10, 10, 7, 150, 1000); + drone1.imprime_estados();/*Estado incial do drone*/ + + controle1 = new ControleRemoto(); + + controle1.x = drone1; /*Controle está conectado ao drone1*/ + controle1.alcance = 10000; /*10km*/ + controle1.nivel_bateria = 100; /*Bateria está 100%*/ + controle1.aumentar_vel_vertical(); + controle1.aumentar_vel_vertical(); + controle1.aumentar_vel_horizontal(); + controle1.iniciar_interromper_gravacao(); + + drone1.imprime_estados();/*Estado depois de alterar as velocidades e + iniciar a gravação*/ + + drone1.distancia = 10005; /*Maior do que o alcance do controle, não + altera os estados*/ + controle1.aumentar_vel_horizontal(); + controle1.aumentar_vel_horizontal(); + controle1.aumentar_vel_vertical(); + controle1.aumentar_vel_vertical(); + + drone1.imprime_estados();/*Estado depois da tentativa de alteração com a + distancia do drone1 maior do que o alcance do controle remoto*/ + } + +} +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*Classe Drone*/ + +package drone; + + +public class Drone { + int n_de_helices; + String marca; + String modelo; + String camera; + int vel_vert; + int vel_hor; + int vel_vert_max; + int vel_hor_max; + int autonomia_bateria; + int distancia; + int distancia_max; + boolean estado_camera; + + public Drone(){}; + + public void aumentar_vel_vertical(){ + if(vel_vert0){ + vel_vert--; + } + } + + public void aumentar_vel_horizontal(){ + if(vel_hor0){ + vel_hor--; + } + } + + public boolean iniciar_interromper_gravacao(){ + estado_camera = !estado_camera; + return estado_camera; + } + + public void diminuir_vel_max(){ + if(autonomia_bateria < 5){ + vel_hor_max = vel_hor_max/2; + vel_vert_max = vel_vert_max/2; + } + } + + public void imprime_estados(){ + System.out.printf("Marca %s\n", marca); + System.out.printf("Modelo %s\n", modelo); + System.out.printf("Número de hélices = %d\n", n_de_helices); + System.out.printf("Câmera = %s\n", camera); + System.out.printf("Vel.vertical.atual = %d m/s\n", vel_vert); + System.out.printf("Vel.vertical.máx = %d m/s\n", vel_vert_max); + System.out.printf("Vel.horizontal.atual = %d m/s\n", vel_hor); + System.out.printf("Vel.horizontal.máx = %d m/s\n", vel_hor_max); + System.out.printf("Autonomia bateria = %d minutos\n", autonomia_bateria); + System.out.printf("Distância máxima = %d metros\n", distancia_max); + if(estado_camera == false){ + System.out.printf("Estado da camera = Desligada\n"); + } + else{ + System.out.printf("Estado da camera = Ligada\n"); + } + System.out.println(""); + } + + public Drone(String m, String model, int n_hel, String cam, int vel_vert, int vel_hor, int auton, int d, int dist){ + marca = m; + modelo = model; + n_de_helices = n_hel; + camera = cam; + vel_vert_max = vel_vert; + vel_hor_max = vel_hor; + autonomia_bateria = auton; + distancia_max = d; + distancia = dist; + } +} + +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////////////////////////////// +/*Classe Controle*/ + + +package drone; + +public class ControleRemoto { + Drone x; + int autonomia_bateria; + int nivel_bateria; + int alcance; + + public void aumentar_vel_vertical(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.aumentar_vel_vertical(); + } + } + + public void diminuir_vel_vertical(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.diminuir_vel_vertical(); + } + } + + public void aumentar_vel_horizontal(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.aumentar_vel_horizontal(); + } + } + + public void diminuir_vel_horizontal(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.diminuir_vel_horizontal(); + } + } + + public boolean iniciar_interromper_gravacao(){ + if(alcance >= x.distancia && nivel_bateria>0){ + x.iniciar_interromper_gravacao(); + } + return x.estado_camera; + } +} +/////////////////////////////////////////////////////////////////////////////////////////////////////// +``` + + + ## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From 59b89f244c8c02b1ea92cc649fd8afeac1f3d6d8 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 23:05:54 -0300 Subject: [PATCH 61/65] =?UTF-8?q?Quest=C3=A3o=206?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 2483004..ecca40d 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -1,8 +1,6 @@ Matheus Roberto 13/0126721
Pedro Kelvin 13/0129674 -Atividade para realizar em dupla e entregar via GitHub. Uma entrega por dupla. -Prazo para entrega: ~~4/4/2017~~ 10/04/2017, 23:59:59. --- title: Exercício prático layout: default @@ -463,7 +461,27 @@ public class ControleRemoto { /////////////////////////////////////////////////////////////////////////////////////////////////////// ``` - +**Questão 6:** +

+*a)*
+Errado! a1 e a2 nem se quer são referências, são atributos da classe Questao6
+
+*b)*
+Estados de q1:
+a1= 0 a2 = 0.0 a3 = null a4 = false
+Estados de q2:
+a1= 0 a2 = 0.0 a3 = null a4 = false
+Estados de q3:
+a1= 1 a2 = 1.0 a3 = "null" a4 = false
+
+*c)*
+False
+True
+False
+True
+True
+False
+

## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From 9e72b1abbe9a3b8ee84dc0ce287b32ef85b24cc5 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 23:06:36 -0300 Subject: [PATCH 62/65] =?UTF-8?q?Quest=C3=A3o=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index ecca40d..8ab54e3 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -483,6 +483,16 @@ True
False


+**Questão 7:** +

+Nome: André
Curso: &c1
Data de nascimento: 23/2/1983

+Nome: Maria
Curso: &c2
Data de nascimento: 27/5/1994

+Nome: Junior
Curso: &c1
Data de nascimento: 16/11/1995

+False
False
True +

+ + + ## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From 5088374eba057607036dde435d914e98f227774e Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 23:07:03 -0300 Subject: [PATCH 63/65] =?UTF-8?q?Quest=C3=A3o=208?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 8ab54e3..84deeda 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -491,7 +491,28 @@ Nome: Junior
Curso: &c1
Data de nascimento: 16/11/1995

False
False
True

- +**Questão 8:** +

+Impressão do Garbage collector:
+Esse objeto ALUNO vai ser destruido.
+Detalhes do objeto:
+
+Nome: Maria
+Curso: &c2
+Data de nascimento: 27/5/1994
+Esse CURSO vai ser destruido.
+Detalhes do objeto:
+
+Nome do curso: Engenharia de Software
+Codigo: 1
+Carga horaria: 240
+Esse objeto ALUNO vai ser destruido.
+Detalhes do objeto:
+
+Nome: Andre
+Curso: &c1
+Data de nascimento: 23/2/1983
+

## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From e85e4c4182639a4c52191fe40352a656c8eac2bb Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 23:07:31 -0300 Subject: [PATCH 64/65] =?UTF-8?q?Quest=C3=A3o=209?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 84deeda..7eb1c1c 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -513,6 +513,29 @@ Nome: Andre
Curso: &c1
Data de nascimento: 23/2/1983


+**Questão 9:** +```java +package questao9; +public class Principal { + public static void main(String[] args) { + Curso c1, c2; + Aluno a1, a2, a3; + + c2 = new Curso(2, "Engenharia Eletrônica", 257); + + a1 = new Aluno("Andre", c1, 13, 23, 02, 1983); + a2 = new Aluno("Maria", c2, 5, 27, 5, 1994); + + /*Errado! Curso é o nome da classe e não do objeto.*/ Curso.obterDetalhes(); + /*Errado! O objeto c2 não possui o atributo matrícula.*/ c2.matricula = 20; + /*Errado! Curso é o nome da classe e não do objeto.*/ Curso.nome = "Ciência da computação"; + /*Errado! O identificador c1 não chegou a ser instanciado como um objeto.*/ c1.codigo = 21; + /*Errado! Aluno é o nome da classe e não do objeto.*/ Aluno.obterDetalhes(); + /*Errado! A classe aluno no possui o método carga horária e o a3 não foi instanciado.*/ a3.cargaHoraria() = 220; + } +} +``` + ## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011 From dc0ec292ff07c1525b60924ccc85aaf40ecde1c1 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Mon, 10 Apr 2017 23:07:50 -0300 Subject: [PATCH 65/65] =?UTF-8?q?Quest=C3=A3o=2010?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lectures/oo/exercicio2/atividade2.md | 132 +++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) diff --git a/lectures/oo/exercicio2/atividade2.md b/lectures/oo/exercicio2/atividade2.md index 7eb1c1c..3a25258 100644 --- a/lectures/oo/exercicio2/atividade2.md +++ b/lectures/oo/exercicio2/atividade2.md @@ -537,6 +537,138 @@ public class Principal { ``` +**Questão 10:** +

+a)
+```java +package questão.pkg10; + + +public class Turma { + + int codTurma; + int numVagasTotal; + int numVagasLivres; + int numVagasOcupadas; + String diasOcorrencia; + String horariosOcorrencia; + Disciplina disc; + + Turma(){ + + } + + Turma(int c, int nT, String d, String h, Disciplina D){ + codTurma = c; + numVagasTotal = nT; + diasOcorrencia = d; + horariosOcorrencia = h; + disc = D; + numVagasOcupadas = 0; + numVagasLivres = numVagasTotal; + } + + public void Matricula(){ + if(numVagasLivres > numVagasOcupadas){ + numVagasLivres--; + numVagasOcupadas++; + } + } + + public String obterDetalhes(){ + String resposta = ""; + resposta += "Turma " + codTurma + " da disciplina de " + disc.nome + '\n'; + resposta += "Numero total de vagas: " + numVagasTotal + '\n'; + resposta += "Numero de vagas livres: " + numVagasLivres + '\n'; + resposta += "Numero de vagas ocupadas: " + numVagasOcupadas + '\n'; + resposta += "Dias de ocorrencias: " + diasOcorrencia + '\n'; + resposta += "Horarios de ocorrencia: " + horariosOcorrencia + '\n'; + + return resposta; + } +} + +``` + +
+b)
+ +```java + +package questão.pkg10; + + +public class Questão10 { + public static void main(String[] args) { + Curso c1; + Disciplina d1,d2; + Turma t1, t2; + + String resposta; + + c1 = new Curso(1, "Engenharia de Software", 240); + + d1 = new Disciplina(1,4, "Orientação a Objetos","FGA", c1); + d2 = new Disciplina(2,4, "Desenvolvimento Avançado de Software","FGA", c1); + + t1 = new Turma(1, 46, "Quartas e Sextas", "12:00 - 16:00", d1); + t2 = new Turma(1, 30, "Quartas e Sextas", "16:00 - 18:00", d2); + + resposta = t1.obterDetalhes(); + System.out.println(resposta); + + resposta = t2.obterDetalhes(); + System.out.println(resposta); + + } + +} + +``` + +
+
+c)O código usado aqui é o mesmo do item anterior, pois, para haver uma Turma, precisa de uma Disciplina relacionada à esta Turma. E do mesmo modo, se precisa de um Curso relacionado à disciplina. Assim, não haveria como instanciar um objeto do tipo Turma sem que antes houvesse um do tipo Disciplina e do tipo Curso. Logo, ambos os itens geram a mesma resposta. +
+
+d)
+ +```java +package questão.pkg10; + +public class Questão10 { + public static void main(String[] args) { + Curso c1,c2; + Disciplina d1,d2; + Turma t1, t2; + Aluno a1, a2, a3; + + String resposta; + + c1 = new Curso(1, "Engenharia de Software", 240); + c2 = new Curso(2, "Engenharia Eletrônica", 257); + + d1 = new Disciplina(1,4, "Orientação a Objetos","FGA", c1); + d2 = new Disciplina(2,4, "Desenvolvimento Avançado de Software","FGA", c1); + + t1 = new Turma(1, 46, "Quartas e Sextas", "12:00 - 16:00", d1); + t2 = new Turma(1, 30, "Quartas e Sextas", "16:00 - 18:00", d2); + + a1 = new Aluno("Andre", c1, 13, 23, 02, 1983); + a2 = new Aluno("Maria", c2, 5, 27, 5, 1994); + a3 = new Aluno("Junior", c1, 70, 16, 11, 1995); + + /* Aqui as vagas das turmas estão sendo diminuidas, logo, os alunos estão sendo matriculados */ + a1.Matricula(t1); + a2.Matricula(t1); + a3.Matricula(t2); + + + } +} + +``` + ## Referências: \[[OPEN ACCESS][eckDavid]\] Eck, David J. Introduction to Programming Using Java, 6th ed. 2011