Ybadoo - Soluções em Software Livre
Tutoriais
Programação Orientada a Objetos

Slides

Exercício 05.01 Desenvolva uma classe chamada Triangle para representar um triângulo equilátero, ou seja, um trilátero regular com três lados de mesmo comprimento. A classe possui um único atributo denominado side, do tipo double, que representa o lado do triângulo equilátero e cujo valor deve ser maior ou igual a zero e menor ou igual a vinte. O lado do triângulo equilátero pode ser obtido e alterado pelo usuário por meio dos métodos getSide() e setSide(), respectivamente. A classe também apresenta os métodos area() e perimeter(), que retornam a área e o perímetro do triângulo equilátero, respectivamente. A área de um triângulo equilátero de lado l é obtida pela fórmula √3 / 4 * l2. O perímetro de um triângulo equilátero de lado l é obtido pela fórmula 3 * l.

Exercício 05.02 Desenvolva uma classe chamada Square para representar um quadrado, ou seja, um quadrilátero regular com quatro lados de mesmo comprimento. A classe possui um único atributo denominado side, do tipo double, que representa o lado do quadrado e cujo valor deve ser maior ou igual a zero e menor ou igual a vinte. O lado do quadrado pode ser obtido e alterado pelo usuário por meio dos métodos getSide() e setSide(), respectivamente. A classe também apresenta os métodos area(), diagonal() e perimeter(), que retornam a área, a diagonal e o perímetro do quadrado, respectivamente. A área de um quadrado de lado l é obtida pela fórmula l2. A diagonal de um quadrado de lado l é obtida pela fórmula √2 * l. O perímetro de um quadrado de lado l é obtido pela fórmula 4 * l.

Exercício 05.03 Desenvolva uma classe chamada Pentagon para representar um pentágono, ou seja, um polígono regular com cinco lados de mesmo comprimento. A classe possui um único atributo denominado side, do tipo double, que representa o lado do pentágono e cujo valor deve ser maior ou igual a zero e menor ou igual a vinte. O lado do pentágono pode ser obtido e alterado pelo usuário por meio dos métodos getSide() e setSide(), respectivamente. A classe também apresenta os métodos area() e perimeter(), que retornam a área e o perímetro do pentágono, respectivamente. A área de um pentágono de lado l é obtida pela fórmula (l2 * √(25 + 10 * √5)) / 4. O perímetro de um pentágono de lado l é obtido pela fórmula 5 * l.

Exercício 05.04 Desenvolva uma classe chamada Hexagon para representar um hexágono, ou seja, um polígono regular com seis lados de mesmo comprimento. A classe possui um único atributo denominado side, do tipo double, que representa o lado do hexágono e cujo valor deve ser maior ou igual a zero e menor ou igual a vinte. O lado do hexágono pode ser obtido e alterado pelo usuário por meio dos métodos getSide() e setSide(), respectivamente. A classe também apresenta os métodos area() e perimeter(), que retornam a área e o perímetro do hexágono, respectivamente. A área de um hexágono de lado l é obtida pela fórmula 3 / 2 * √3 * l2. O perímetro de um hexágono de lado l é obtido pela fórmula 6 * l.

Exercício 05.05 Desenvolva uma classe chamada Octagon para representar um octógono, ou seja, um polígono regular com oito lados de mesmo comprimento. A classe possui um único atributo denominado side, do tipo double, que representa o lado do octógono e cujo valor deve ser maior ou igual a zero e menor ou igual a vinte. O lado do octógono pode ser obtido e alterado pelo usuário por meio dos métodos getSide() e setSide(), respectivamente. A classe também apresenta os métodos area() e perimeter(), que retornam a área e o perímetro do octógono, respectivamente. A área de um octógono de lado l é obtida pela fórmula 2 * (√2 + 1) * l2. O perímetro de um octógono de lado l é obtido pela fórmula 8 * l.

Exercício 05.06 Desenvolva uma classe chamada Tetrahedron para representar um tetraedro, ou seja, um poliedro regular de quatro faces, considerado um dos cinco Sólidos Platônicos. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do tetraedro e cujo valor deve ser maior ou igual a zero e menor ou igual a trinta. A aresta do tetraedro pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do tetraedro, respectivamente. A área de um tetraedro de aresta a é obtida pela fórmula √3 * a2. O volume de um tetraedro de aresta a é obtido pela fórmula √2 / 12 * a3.

Exercício 05.07 Desenvolva uma classe chamada Hexahedron para representar um hexaedro, ou seja, um poliedro regular de seis faces, considerado um dos cinco Sólidos Platônicos. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do hexaedro e cujo valor deve ser maior ou igual a zero e menor ou igual a trinta. A aresta do hexaedro pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do hexaedro, respectivamente. A área de um hexaedro de aresta a é obtida pela fórmula 6 * a2. O volume de um hexaedro de aresta a é obtido pela fórmula a3.

Exercício 05.08 Desenvolva uma classe chamada Octahedron para representar um octaedro, ou seja, um poliedro regular de oito faces, considerado um dos cinco Sólidos Platônicos. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do octaedro e cujo valor deve ser maior ou igual a zero e menor ou igual a trinta. A aresta do octaedro pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do octaedro, respectivamente. A área de um octaedro de aresta a é obtida pela fórmula 2 * √3 * a2. O volume de um octaedro de aresta a é obtido pela fórmula √2 / 3 * a3.

Exercício 05.09 Desenvolva uma classe chamada Dodecahedron para representar um dodecaedro, ou seja, um poliedro regular de doze faces, considerado um dos cinco Sólidos Platônicos. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do dodecaedro e cujo valor deve ser maior ou igual a zero e menor ou igual a trinta. A aresta do dodecaedro pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do dodecaedro, respectivamente. A área de um dodecaedro de aresta a é obtida pela fórmula 3 * √(25 + 10 * √5) * a2. O volume de um dodecaedro de aresta a é obtido pela fórmula 1 / 4 * (15 + 7 * √5) * a3.

Exercício 05.10 Desenvolva uma classe chamada Icosahedron para representar um icosaedro, ou seja, um poliedro regular de vinte faces, considerado um dos cinco Sólidos Platônicos. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do icosaedro e cujo valor deve ser maior ou igual a zero e menor ou igual a trinta. A aresta do icosaedro pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do icosaedro, respectivamente. A área de um icosaedro de aresta a é obtida pela fórmula 5 * √3 * a2. O volume de um icosaedro de aresta a é obtido pela fórmula 5 / 12 * (3 + √5) * a3.

Exercício 05.11 Desenvolva uma classe chamada TruncatedTetrahedron para representar um tetraedro truncado, ou seja, um poliedro semi-regular composto por quatro hexágonos regulares e quatro triângulos equiláteros, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do tetraedro truncado e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do tetraedro truncado pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do tetraedro truncado, respectivamente. A área de um tetraedro truncado de aresta a é obtida pela fórmula 7 * √3 * a2. O volume de um tetraedro truncado de aresta a é obtido pela fórmula 23 / 12 * √2 * a3.

Exercício 05.12 Desenvolva uma classe chamada Cuboctahedron para representar um cuboctaedro, ou seja, um poliedro semi-regular composto por oito faces triangulares e seis faces quadradas, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do cuboctaedro e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do cuboctaedro pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do cuboctaedro, respectivamente. A área de um cuboctaedro de aresta a é obtida pela fórmula (6 + 2 * √3) * a2. O volume de um cuboctaedro de aresta a é obtido pela fórmula 5 / 3 * √2 * a3.

Exercício 05.13 Desenvolva uma classe chamada TruncatedCube para representar um cubo truncado, ou seja, um poliedro semi-regular composto por seis faces octogonais regulares e oito faces triangulares regulares, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do cubo truncado e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do cubo truncado pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do cubo truncado, respectivamente. A área de um cubo truncado de aresta a é obtida pela fórmula 2 * (6 + 6 * √2 + √3) * a2. O volume de um cubo truncado de aresta a é obtido pela fórmula 1 / 3 * (21 + 14 * √2) * a3.

Exercício 05.14 Desenvolva uma classe chamada TruncatedOctahedron para representar um octaedro truncado, ou seja, um poliedro semi-regular composto por oito faces hexagonais regulares e seis faces quadradas, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do octaedro truncado e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do octaedro truncado pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do octaedro truncado, respectivamente. A área de um octaedro truncado de aresta a é obtida pela fórmula (6 + 12 * √3) * a2. O volume de um octaedro truncado de aresta a é obtido pela fórmula 8 * √2 * a3.

Exercício 05.15 Desenvolva uma classe chamada Rhombicuboctahedron para representar um rombicuboctaedro, ou seja, um poliedro semi-regular composto por oito triângulos equiláteros e dezoito quadrados, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do rombicuboctaedro e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do rombicuboctaedro pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do rombicuboctaedro, respectivamente. A área de um rombicuboctaedro de aresta a é obtida pela fórmula (18 + 2 * √3) * a2. O volume de um rombicuboctaedro de aresta a é obtido pela fórmula 1 / 3 * (12 + 10 * √2) * a3.

Exercício 05.16 Desenvolva uma classe chamada TruncatedCuboctahedron para representar um cuboctaedro truncado, ou seja, um poliedro semi-regular composto por doze quadrados, oito hexágonos e seis octógonos, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do cuboctaedro truncado e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do cuboctaedro truncado pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do cuboctaedro truncado, respectivamente. A área de um cuboctaedro truncado de aresta a é obtida pela fórmula 12 * (2 + √2 + √3) * a2. O volume de um cuboctaedro truncado de aresta a é obtido pela fórmula (22 + 14 * √2) * a3.

Exercício 05.17 Desenvolva uma classe chamada Icosidodecahedron para representar um icosidodecaedro, ou seja, um poliedro semi-regular composto por vinte faces triangulares regulares e doze faces pentagonais regulares, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do icosidodecaedro e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do icosidodecaedro pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do icosidodecaedro, respectivamente. A área de um icosidodecaedro de aresta a é obtida pela fórmula (5 * √3 + 3 * √(25 + 10 * √5)) * a2. O volume de um icosidodecaedro de aresta a é obtido pela fórmula 1 / 6 * (45 + 17 * √5) * a3.

Exercício 05.18 Desenvolva uma classe chamada TruncatedDodecahedron para representar um dodecaedro truncado, ou seja, um poliedro semi-regular composto por doze faces decagonais regulares e vinte triangulares regulares, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do dodecaedro truncado e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do dodecaedro truncado pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do dodecaedro truncado, respectivamente. A área de um dodecaedro truncado de aresta a é obtida pela fórmula 5 * (√3 + 6 * √(5 + 2 * √5)) * a2. O volume de um dodecaedro truncado de aresta a é obtido pela fórmula 5 / 12 * (99 + 47 * √5) * a3.

Exercício 05.19 Desenvolva uma classe chamada TruncatedIcosahedron para representar um icosaedro truncado, ou seja, um poliedro semi-regular composto por doze faces pentagonais regulares e vinte hexagonais regulares, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do icosaedro truncado e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do icosaedro truncado pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do icosaedro truncado, respectivamente. A área de um icosaedro truncado de aresta a é obtida pela fórmula 3 * (10 * √3 + √5 * √(5 + 2 * √5)) * a2. O volume de um icosaedro truncado de aresta a é obtido pela fórmula 1 / 4 * (125 + 43 * √5) * a3.

Exercício 05.20 Desenvolva uma classe chamada Rhombicosidodecahedron para representar um rombicosidodecaedro, ou seja, um poliedro semi-regular composto por vinte faces triangulares regulares, trinta quadradas e doze pentagonais regulares, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do rombicosidodecaedro e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do rombicosidodecaedro pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do rombicosidodecaedro, respectivamente. A área de um rombicosidodecaedro de aresta a é obtida pela fórmula (30 + √(30 * (10 + 3 * √5 + √(15 * (2 + 2 * √5))))) * a2. O volume de um rombicosidodecaedro de aresta a é obtido pela fórmula 1 / 3 * (60 + 29 * √5) * a3.

Exercício 05.21 Desenvolva uma classe chamada TruncatedIcosidodecahedron para representar um icosidodecaedro truncado, ou seja, um poliedro semi-regular composto por trinta quadrados, vinte hexágonos e doze decágonos, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do icosidodecaedro truncado e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do icosidodecaedro truncado pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do icosidodecaedro truncado, respectivamente. A área de um icosidodecaedro truncado de aresta a é obtida pela fórmula 30 * (1 + √3 + √(5 + 2 * √5)) * a2. O volume de um icosidodecaedro truncado de aresta a é obtido pela fórmula (95 + 50 * √5) * a3.

Exercício 05.22 Desenvolva uma classe chamada SnubCube para representar um cubo snub, ou seja, um poliedro semi-regular composto por seis quadrados e trinta e dois triângulos equiláteros, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do cubo snub e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do cubo snub pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do cubo snub, respectivamente. A área de um cubo snub de aresta a é obtida pela fórmula (6 + 8 * √3) * a2. O volume de um cubo snub de aresta a é obtido pela fórmula √((613 * t + 203) / (9 * (35 * t - 62))) * a3, sendo t obtido pela fórmula 1 / 3 * (1 + 3√(19 - 3 * √33) + 3√(19 + 3 * √33)).

Exercício 05.23 Desenvolva uma classe chamada SnubDodecahedron para representar um dodecaedro snub, ou seja, um poliedro semi-regular composto por doze pentágonos regulares e oitenta triângulos equiláteros, considerado um dos treze Sólidos de Arquimedes. A classe possui um único atributo denominado edge, do tipo double, que representa a aresta do dodecaedro snub e cujo valor deve ser maior ou igual a zero e menor ou igual a quarenta. A aresta do dodecaedro snub pode ser obtida e alterada pelo usuário por meio dos métodos getEdge() e setEdge(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume do dodecaedro snub, respectivamente. A área de um dodecaedro snub de aresta a é obtida pela fórmula (20 * √3 + 3 * √(25 + 10 * √5)) * a2. O volume de um dodecaedro snub de aresta a é obtido pela fórmula (12 * ξ2 * (3 * τ + 1) - ξ * (36 * τ + 7) - (53 * τ + 6)) / (6 * (√(3 - ξ2))3) * a3, sendo ξ obtido pela fórmula 3√(τ / 2 + 1 / 2 * √(τ - 5 / 27)) + 3√(τ / 2 - 1 / 2 * √(τ - 5 / 27)) e τ pela fórmula (1 + √5) / 2.

Exercício 05.24 Desenvolva uma classe chamada Sphere para representar uma esfera. A classe possui um único atributo denominado radius, do tipo double, que representa o raio da esfera e cujo valor deve ser maior ou igual a zero e menor ou igual a sessenta. O raio da esfera pode ser obtido e alterado pelo usuário por meio dos métodos getRadius() e setRadius(), respectivamente. A classe também apresenta os métodos area() e volume(), que retornam a área e o volume da esfera, respectivamente. A área de uma esfera de raio r é obtida pela fórmula 4 * π * r2. O volume de uma esfera de raio r é obtido pela fórmula 4 / 3 * π * r3.

Exercício 05.25 Desenvolva uma classe chamada Cylinder para representar um cilindro. A classe possui dois atributos denominados height e radius, que representam a altura e o raio do cilindro, respectivamente, ambos do tipo double e cujos valores devem ser maiores ou igual a zero e menores ou igual a dez. A altura do cilindro pode ser obtida e alterada pelo usuário por meio dos métodos getHeight() e setHeight(), respectivamente. O raio do cilindro pode ser obtido e alterado pelo usuário por meio dos métodos getRadius() e setRadius(), respectivamente. A classe também apresenta os métodos baseArea(), lateralArea(), surfaceArea() e volume(), que retornam a área da base, a área lateral, a área total e o volume do cilindro, respectivamente. A área da base de um cilindro de raio r é obtida pela fórmula π * r2. A área lateral de um cilindro de altura h e de raio r é obtida pela fórmula 2 * π * h * r. A área total de um cilindro de altura h e de raio r é obtida pela fórmula 2 * π * (h + r) * r. O volume de um cilindro de altura h e de raio r é obtido pela fórmula π * h * r2.

Exercício 05.26 Desenvolva uma classe chamada Complex para realizar aritmética com números complexos. Os números complexos têm a forma realPart + imaginaryPart * i, onde i é √-1. Utilize variáveis de ponto flutuante para representar os dados private da classe. Forneça um método construtor que permita que um objeto dessa classe seja inicializado quando ele for declarado. Forneça métodos public para cada um dos itens a seguir: a) somar dois números Complex, as partes reais são somadas de um lado e as partes imaginárias são somadas de outro; b) subtrair dois números Complex, a parte real do operando direito é subtraída da parte real do operando esquerdo e a parte imaginária do operando direito é subtraída da parte imaginária do operando esquerdo; c) imprimir os números Complex na forma (a, b), onde a é a parte real e b é a parte imaginária (Deitel, 2003).

Exercício 05.27 Desenvolva uma classe chamada Rational para realizar aritmética com frações. Utilize variáveis do tipo inteiro para representar as variáveis de instância private da classe - o numerator e o denominator. Forneça um método construtor que permita que um objeto dessa classe seja inicializado quando ele for declarado. O construtor deve armazenar a fração na forma reduzida (isto é, a fração 2/4 seria armazenada no objeto como 1 no numerator e 2 no denominator). Forneça métodos public para cada um dos itens a seguir: a) adição de dois números Rational, o resultado da adição deve ser armazenado na forma reduzida; b) subtração de dois números Rational, o resultado da subtração deve ser armazenado na forma reduzida; c) multiplicação de dois números Rational, o resultado da multiplicação deve ser armazenado na forma reduzida; d) divisão de dois números Rational, o resultado da divisão deve ser armazenado na forma reduzida; e) impressão de números Rational na forma a/b, onde a é o numerator e b é o denominator; f) impressão de números Rational em formato de ponto flutuante (considere a possibilidade de fornecer facilidades de formatação que permitam que o usuário da classe especifique o número de dígitos de precisão à direita do ponto de fração decimal) (Deitel, 2003).

Exercício 05.28 Desenvolva uma classe chamada Stack para representar uma estrutura de dados do tipo pilha, ou seja, uma estrutura de dados onde o último elemento a ser inserido, será o primeiro a ser retirado (LIFO). Os elementos devem ser armazenados num array de inteiros. A classe deve possuir um construtor que receba como parâmetro a quantidade máxima de elementos a serem armazenados no array. Forneça métodos public para cada um dos itens a seguir: a) inserir um elemento na pilha; b) remover e retornar o elemento inserido na pilha; c) retornar o elemento inserido na pilha, sem removê-lo; d) retornar o número de elementos inseridos na pilha; e) retornar se há ou não elementos inseridos na pilha.

Exercício 05.29 Qual é a diferença entre exceções verificadas e não-verificadas em Java (Sebesta, 2000)?

Exercício 05.30 Desenvolva uma classe chamada Equipamento com o atributo ligado (tipo boolean) e com os métodos liga e desliga. O método liga torna o atributo ligado verdadeiro e o método desliga torna o atributo ligado falso. Desenvolva uma classe chamada EquipamentoSonoro que herda as características de Equipamento e que possui os atributos volume (tipo int) que varia de 0 a 10 e stereo (tipo boolean). A classe ainda deve possuir métodos para ler e alterar o volume, além dos métodos mono e stereo. O método mono torna o atributo stereo falso e o método stereo torna o atributo stereo verdadeiro. Ao ligar o EquipamentoSonoro através do método liga, seu volume é automaticamente ajustado para 5. Caso o volume seja configurado para um valor inválido, o sistema deverá lançar a exceção IllegalArgumentException.