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

Slides

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. A classe possui dois construtores: o primeiro configura o lado do triângulo equilátero com o valor padrão 1.0, e o segundo recebe como parâmetro o lado do triângulo equilátero. 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.
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. A classe possui dois construtores: o primeiro configura o lado do quadrado com o valor padrão 1.0, e o segundo recebe como parâmetro o lado do quadrado. 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.
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. A classe possui dois construtores: o primeiro configura o lado do pentágono com o valor padrão 1.0, e o segundo recebe como parâmetro o lado do pentágono. 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.
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. A classe possui dois construtores: o primeiro configura o lado do hexágono com o valor padrão 1.0, e o segundo recebe como parâmetro o lado do hexágono. 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.
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. A classe possui dois construtores: o primeiro configura o lado do octógono com o valor padrão 1.0, e o segundo recebe como parâmetro o lado do octógono. 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.
Desenvolva uma classe chamada Decagon para representar um decágono, ou seja, um polígono regular com dez lados de mesmo comprimento. A classe possui um único atributo denominado side, do tipo double, que representa o lado do decágono e cujo valor deve ser maior ou igual a zero e menor ou igual a vinte. A classe possui dois construtores: o primeiro configura o lado do decágono com o valor padrão 1.0, e o segundo recebe como parâmetro o lado do decágono. O lado do decá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 decágono, respectivamente. A área de um decágono de lado l é obtida pela fórmula 5 / 2 * (√5 + 2 * √5) * l2. O perímetro de um decágono de lado l é obtido pela fórmula 10 * l.
Desenvolva uma classe chamada Dodecagon para representar um dodecágono, ou seja, um polígono regular com doze lados de mesmo comprimento. A classe possui um único atributo denominado side, do tipo double, que representa o lado do dodecágono e cujo valor deve ser maior ou igual a zero e menor ou igual a vinte. A classe possui dois construtores: o primeiro configura o lado do dodecágono com o valor padrão 1.0, e o segundo recebe como parâmetro o lado do dodecágono. O lado do dodecá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 dodecágono, respectivamente. A área de um dodecágono de lado l é obtida pela fórmula (6 + 3 * √3) * l2. O perímetro de um dodecágono de lado l é obtido pela fórmula 12 * l.
Desenvolva uma classe chamada Hexadecagon para representar um hexadecágono, ou seja, um polígono regular com dezesseis lados de mesmo comprimento. A classe possui um único atributo denominado side, do tipo double, que representa o lado do hexadecágono e cujo valor deve ser maior ou igual a zero e menor ou igual a vinte. A classe possui dois construtores: o primeiro configura o lado do hexadecágono com o valor padrão 1.0, e o segundo recebe como parâmetro o lado do hexadecágono. O lado do hexadecá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 hexadecágono, respectivamente. A área de um hexadecágono de lado l é obtida pela fórmula 4 * (1 + √2 + √(2 * (2 + √2))) * l2. O perímetro de um hexadecágono de lado l é obtido pela fórmula 16 * l.
Desenvolva uma classe chamada Icosagon para representar um icoságono, ou seja, um polígono regular com vinte lados de mesmo comprimento. A classe possui um único atributo denominado side, do tipo double, que representa o lado do icoságono e cujo valor deve ser maior ou igual a zero e menor ou igual a vinte. A classe possui dois construtores: o primeiro configura o lado do icoságono com o valor padrão 1.0, e o segundo recebe como parâmetro o lado do icoságono. O lado do icosá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 icoságono, respectivamente. A área de um icoságono de lado l é obtida pela fórmula 5 * (1 + √5 + √(5 + 2 * √5)) * l2. O perímetro de um icoságono de lado l é obtido pela fórmula 20 * l.
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 classe possui dois construtores: o primeiro configura a aresta do tetraedro com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do tetraedro. 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.
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 classe possui dois construtores: o primeiro configura a aresta do hexaedro com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do hexaedro. 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.
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 classe possui dois construtores: o primeiro configura a aresta do octaedro com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do octaedro. 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.
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 classe possui dois construtores: o primeiro configura a aresta do dodecaedro com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do dodecaedro. 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.
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 classe possui dois construtores: o primeiro configura a aresta do icosaedro com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do icosaedro. 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.
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 classe possui dois construtores: o primeiro configura a aresta do tetraedro truncado com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do tetraedro truncado. 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.
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 classe possui dois construtores: o primeiro configura a aresta do cuboctaedro com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do cuboctaedro. 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.
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 classe possui dois construtores: o primeiro configura a aresta do cubo truncado com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do cubo truncado. 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.
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 classe possui dois construtores: o primeiro configura a aresta do octaedro truncado com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do octaedro truncado. 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.
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 classe possui dois construtores: o primeiro configura a aresta do rombicuboctaedro com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do rombicuboctaedro. 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.
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 classe possui dois construtores: o primeiro configura a aresta do cuboctaedro truncado com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do cuboctaedro truncado. 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.
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 classe possui dois construtores: o primeiro configura a aresta do icosidodecaedro com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do icosidodecaedro. 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.
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 classe possui dois construtores: o primeiro configura a aresta do dodecaedro truncado com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do dodecaedro truncado. 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.
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 classe possui dois construtores: o primeiro configura a aresta do icosaedro truncado com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do icosaedro truncado. 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.
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 classe possui dois construtores: o primeiro configura a aresta do rombicosidodecaedro com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do rombicosidodecaedro. 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.
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 classe possui dois construtores: o primeiro configura a aresta do icosidodecaedro truncado com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do icosidodecaedro truncado. 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.
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 classe possui dois construtores: o primeiro configura a aresta do cubo snub com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do cubo snub. 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)).
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 classe possui dois construtores: o primeiro configura a aresta do dodecaedro snub com o valor padrão 1.0, e o segundo recebe como parâmetro a aresta do dodecaedro snub. 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.
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. A classe possui dois construtores: o primeiro configura o raio da esfera com o valor padrão 1.0, e o segundo recebe como parâmetro o raio da esfera. 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.
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 setenta. A classe possui dois construtores: o primeiro configura a altura e o raio do cilindro com o valor padrão 1.0, e o segundo recebe como parâmetro a altura e o raio do cilindro. 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.
(Deitel, 2003) 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 um construtor sem argumentos com valores default caso nenhum inicializador seja fornecido. Forneça métodos public para cada um dos itens a seguir:
  1. somar dois números Complex, as partes reais são somadas de um lado e as partes imaginárias são somadas de outro;
  2. 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;
  3. imprimir os números Complex na forma (a, b), onde a é a parte real e b é a parte imaginária.
(Deitel, 2003) 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 um construtor sem argumentos com valores default caso nenhum inicializador seja fornecido. Forneça métodos public para cada um dos itens a seguir:
  1. adição de dois números Rational, o resultado da adição deve ser armazenado na forma reduzida;
  2. subtração de dois números Rational, o resultado da subtração deve ser armazenado na forma reduzida;
  3. multiplicação de dois números Rational, o resultado da multiplicação deve ser armazenado na forma reduzida;
  4. divisão de dois números Rational, o resultado da divisão deve ser armazenado na forma reduzida;
  5. impressão de números Rational na forma a/b, onde a é o numerator e b é o denominator;
  6. 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).
(Goodrich, 2007) Desenvolva uma classe chamada Stack para representar o tipo abstrato de dados pilha. Uma pilha é uma estrutura de dados baseada no princípio LIFO, no qual o último elemento inserido é o primeiro elemento retirado. A classe utiliza um arranjo de inteiros para o armazenamento dos elementos e possui os seguintes atributos:
  1. capacity - capacidade máxima de elementos armazenados na pilha.
  2. data - arranjo de inteiros para o armazenamento dos elementos na pilha.
  3. top - índice para o elemento armazenado no topo da pilha.
A classe possui dois construtores: o primeiro configura a capacidade máxima de elementos armazenados na pilha com o valor padrão 100, e o segundo recebe como parâmetro a capacidade máxima de elementos armazenados na pilha. Os métodos especificados para o tipo abstrato de dados pilha são:
  1. empty - verifica se a pilha está vazia.
  2. peek - recupera o elemento do topo da pilha, ou retorna zero caso a pilha esteja vazia.
  3. pop - recupera e remove o elemento do topo da pilha, ou retorna zero caso a pilha esteja vazia.
  4. push - insere um novo elemento no topo da pilha, retornando true caso o novo elemento seja inserido no topo da pilha, ou false caso a pilha esteja cheia.
  5. size - retorna a quantidade de elementos armazenados na pilha.
(Goodrich, 2007) Desenvolva uma classe chamada Stack para representar o tipo abstrato de dados pilha. Uma pilha é uma estrutura de dados baseada no princípio LIFO, no qual o último elemento inserido é o primeiro elemento retirado. A classe utiliza uma lista simplesmente encadeada de inteiros para o armazenamento dos elementos. Uma lista simplesmente encadeada (Singly Linked List) é uma coleção de nodos (Node) que juntos formam uma ordem linear, no qual cada nodo é um objeto que armazena um elemento e uma referência, chamada next, para o próximo nodo. A classe possui um único atributo denominado header, que representa a referência para o nodo armazenado no topo da pilha. Os métodos especificados para o tipo abstrato de dados pilha são:
  1. empty - verifica se a pilha está vazia.
  2. peek - recupera o elemento do topo da pilha, ou retorna zero caso a pilha esteja vazia.
  3. pop - recupera e remove o elemento do topo da pilha, ou retorna zero caso a pilha esteja vazia.
  4. push - insere um novo elemento no topo da pilha.
  5. size - retorna a quantidade de elementos armazenados na pilha.
(Goodrich, 2007) Desenvolva uma classe chamada Stack para representar o tipo abstrato de dados pilha. Uma pilha é uma estrutura de dados baseada no princípio LIFO, no qual o último elemento inserido é o primeiro elemento retirado. A classe utiliza uma lista simplesmente encadeada de inteiros para o armazenamento dos elementos. Uma lista simplesmente encadeada (Singly Linked List) é uma coleção de nodos (Node) que juntos formam uma ordem linear, no qual cada nodo é um objeto que armazena um elemento e uma referência, chamada next, para o próximo nodo. A classe possui os seguintes atributos:
  1. capacity - capacidade máxima de elementos armazenados na pilha.
  2. header - referência para o nodo armazenado no topo da pilha.
A classe possui dois construtores: o primeiro configura a capacidade máxima de elementos armazenados na pilha com o valor padrão 100, e o segundo recebe como parâmetro a capacidade máxima de elementos armazenados na pilha. Os métodos especificados para o tipo abstrato de dados pilha são:
  1. empty - verifica se a pilha está vazia.
  2. peek - recupera o elemento do topo da pilha, ou retorna zero caso a pilha esteja vazia.
  3. pop - recupera e remove o elemento do topo da pilha, ou retorna zero caso a pilha esteja vazia.
  4. push - insere um novo elemento no topo da pilha, retornando true caso o novo elemento seja inserido no topo da pilha, ou false caso a pilha esteja cheia.
  5. size - retorna a quantidade de elementos armazenados na pilha.
(Goodrich, 2007) Desenvolva uma classe chamada Stack para representar o tipo abstrato de dados pilha. Uma pilha é uma estrutura de dados baseada no princípio LIFO, no qual o último elemento inserido é o primeiro elemento retirado. A classe utiliza uma lista duplamente encadeada de inteiros para o armazenamento dos elementos. Uma lista duplamente encadeada (Doubly Linked List) é uma coleção de nodos (Node) que juntos formam uma ordem linear, no qual cada nodo é um objeto que armazena um elemento e duas referências, chamadas previous e next, para o nodo anterior e posterior ao presente nodo, respectivamente. A classe possui um único atributo denominado header, que representa a referência para o nodo armazenado no topo da pilha. Os métodos especificados para o tipo abstrato de dados pilha são:
  1. empty - verifica se a pilha está vazia.
  2. peek - recupera o elemento do topo da pilha, ou retorna zero caso a pilha esteja vazia.
  3. pop - recupera e remove o elemento do topo da pilha, ou retorna zero caso a pilha esteja vazia.
  4. push - insere um novo elemento no topo da pilha.
  5. size - retorna a quantidade de elementos armazenados na pilha.
(Goodrich, 2007) Desenvolva uma classe chamada Stack para representar o tipo abstrato de dados pilha. Uma pilha é uma estrutura de dados baseada no princípio LIFO, no qual o último elemento inserido é o primeiro elemento retirado. A classe utiliza uma lista duplamente encadeada de inteiros para o armazenamento dos elementos. Uma lista duplamente encadeada (Doubly Linked List) é uma coleção de nodos (Node) que juntos formam uma ordem linear, no qual cada nodo é um objeto que armazena um elemento e duas referências, chamadas previous e next, para o nodo anterior e posterior ao presente nodo, respectivamente. A classe possui os seguintes atributos:
  1. capacity - capacidade máxima de elementos armazenados na pilha.
  2. header - referência para o nodo armazenado no topo da pilha.
A classe possui dois construtores: o primeiro configura a capacidade máxima de elementos armazenados na pilha com o valor padrão 100, e o segundo recebe como parâmetro a capacidade máxima de elementos armazenados na pilha. Os métodos especificados para o tipo abstrato de dados pilha são:
  1. empty - verifica se a pilha está vazia.
  2. peek - recupera o elemento do topo da pilha, ou retorna zero caso a pilha esteja vazia.
  3. pop - recupera e remove o elemento do topo da pilha, ou retorna zero caso a pilha esteja vazia.
  4. push - insere um novo elemento no topo da pilha, retornando true caso o novo elemento seja inserido no topo da pilha, ou false caso a pilha esteja cheia.
  5. size - retorna a quantidade de elementos armazenados na pilha.
(Goodrich, 2007) Desenvolva uma classe chamada Queue para representar o tipo abstrato de dados fila. Uma fila é uma estrutura de dados baseada no princípio FIFO, no qual o primeiro elemento inserido é o primeiro elemento retirado. A classe utiliza um arranjo circular de inteiros para o armazenamento dos elementos e possui os seguintes atributos:
  1. capacity - capacidade máxima de elementos armazenados na fila.
  2. data - arranjo circular de inteiros para o armazenamento dos elementos na fila.
  3. first - índice para o elemento armazenado no início da fila.
  4. last - índice para o elemento armazenado no fim da fila.
A classe possui dois construtores: o primeiro configura a capacidade máxima de elementos armazenados na fila com o valor padrão 100, e o segundo recebe como parâmetro a capacidade máxima de elementos armazenados na fila. Os métodos especificados para o tipo abstrato de dados fila são:
  1. empty - verifica se a fila está vazia.
  2. offer - insere um novo elemento no fim da fila, retornando true caso o novo elemento seja inserido no fim da fila, ou false caso a fila esteja cheia.
  3. peek - recupera o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  4. poll - recupera e remove o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  5. size - retorna a quantidade de elementos armazenados na fila.
(Goodrich, 2007) Desenvolva uma classe chamada Queue para representar o tipo abstrato de dados fila. Uma fila é uma estrutura de dados baseada no princípio FIFO, no qual o primeiro elemento inserido é o primeiro elemento retirado. A classe utiliza uma lista simplesmente encadeada de inteiros para o armazenamento dos elementos. Uma lista simplesmente encadeada (Singly Linked List) é uma coleção de nodos (Node) que juntos formam uma ordem linear, no qual cada nodo é um objeto que armazena um elemento e uma referência, chamada next, para o próximo nodo. A classe possui um único atributo denominado header, que representa a referência para o nodo armazenado no início da fila. Os métodos especificados para o tipo abstrato de dados fila são:
  1. empty - verifica se a fila está vazia.
  2. offer - insere um novo elemento no fim da fila.
  3. peek - recupera o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  4. poll - recupera e remove o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  5. size - retorna a quantidade de elementos armazenados na fila.
(Goodrich, 2007) Desenvolva uma classe chamada Queue para representar o tipo abstrato de dados fila. Uma fila é uma estrutura de dados baseada no princípio FIFO, no qual o primeiro elemento inserido é o primeiro elemento retirado. A classe utiliza uma lista simplesmente encadeada de inteiros para o armazenamento dos elementos. Uma lista simplesmente encadeada (Singly Linked List) é uma coleção de nodos (Node) que juntos formam uma ordem linear, no qual cada nodo é um objeto que armazena um elemento e uma referência, chamada next, para o próximo nodo. A classe possui os seguintes atributos:
  1. header - referência para o nodo armazenado no início da fila.
  2. tailer - referência para o nodo armazenado no fim da fila.
Os métodos especificados para o tipo abstrato de dados fila são:
  1. empty - verifica se a fila está vazia.
  2. offer - insere um novo elemento no fim da fila.
  3. peek - recupera o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  4. poll - recupera e remove o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  5. size - retorna a quantidade de elementos armazenados na fila.
(Goodrich, 2007) Desenvolva uma classe chamada Queue para representar o tipo abstrato de dados fila. Uma fila é uma estrutura de dados baseada no princípio FIFO, no qual o primeiro elemento inserido é o primeiro elemento retirado. A classe utiliza uma lista simplesmente encadeada de inteiros para o armazenamento dos elementos. Uma lista simplesmente encadeada (Singly Linked List) é uma coleção de nodos (Node) que juntos formam uma ordem linear, no qual cada nodo é um objeto que armazena um elemento e uma referência, chamada next, para o próximo nodo. A classe possui os seguintes atributos:
  1. capacity - capacidade máxima de elementos armazenados na fila.
  2. header - referência para o nodo armazenado no início da fila.
A classe possui dois construtores: o primeiro configura a capacidade máxima de elementos armazenados na fila com o valor padrão 100, e o segundo recebe como parâmetro a capacidade máxima de elementos armazenados na fila. Os métodos especificados para o tipo abstrato de dados fila são:
  1. empty - verifica se a fila está vazia.
  2. offer - insere um novo elemento no fim da fila, retornando true caso o novo elemento seja inserido no fim da fila, ou false caso a fila esteja cheia.
  3. peek - recupera o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  4. poll - recupera e remove o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  5. size - retorna a quantidade de elementos armazenados na fila.
(Goodrich, 2007) Desenvolva uma classe chamada Queue para representar o tipo abstrato de dados fila. Uma fila é uma estrutura de dados baseada no princípio FIFO, no qual o primeiro elemento inserido é o primeiro elemento retirado. A classe utiliza uma lista simplesmente encadeada de inteiros para o armazenamento dos elementos. Uma lista simplesmente encadeada (Singly Linked List) é uma coleção de nodos (Node) que juntos formam uma ordem linear, no qual cada nodo é um objeto que armazena um elemento e uma referência, chamada next, para o próximo nodo. A classe possui os seguintes atributos:
  1. capacity - capacidade máxima de elementos armazenados na fila.
  2. header - referência para o nodo armazenado no início da fila.
  3. tailer - referência para o nodo armazenado no fim da fila.
A classe possui dois construtores: o primeiro configura a capacidade máxima de elementos armazenados na fila com o valor padrão 100, e o segundo recebe como parâmetro a capacidade máxima de elementos armazenados na fila. Os métodos especificados para o tipo abstrato de dados fila são:
  1. empty - verifica se a fila está vazia.
  2. offer - insere um novo elemento no fim da fila, retornando true caso o novo elemento seja inserido no fim da fila, ou false caso a fila esteja cheia.
  3. peek - recupera o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  4. poll - recupera e remove o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  5. size - retorna a quantidade de elementos armazenados na fila.
(Goodrich, 2007) Desenvolva uma classe chamada Queue para representar o tipo abstrato de dados fila. Uma fila é uma estrutura de dados baseada no princípio FIFO, no qual o primeiro elemento inserido é o primeiro elemento retirado. A classe utiliza uma lista duplamente encadeada de inteiros para o armazenamento dos elementos. Uma lista duplamente encadeada (Doubly Linked List) é uma coleção de nodos (Node) que juntos formam uma ordem linear, no qual cada nodo é um objeto que armazena um elemento e duas referências, chamadas previous e next, para o nodo anterior e posterior ao presente nodo, respectivamente. A classe possui um único atributo denominado header, que representa a referência para o nodo armazenado no início da fila. Os métodos especificados para o tipo abstrato de dados fila são:
  1. empty - verifica se a fila está vazia.
  2. offer - insere um novo elemento no fim da fila.
  3. peek - recupera o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  4. poll - recupera e remove o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  5. size - retorna a quantidade de elementos armazenados na fila.
(Goodrich, 2007) Desenvolva uma classe chamada Queue para representar o tipo abstrato de dados fila. Uma fila é uma estrutura de dados baseada no princípio FIFO, no qual o primeiro elemento inserido é o primeiro elemento retirado. A classe utiliza uma lista duplamente encadeada de inteiros para o armazenamento dos elementos. Uma lista duplamente encadeada (Doubly Linked List) é uma coleção de nodos (Node) que juntos formam uma ordem linear, no qual cada nodo é um objeto que armazena um elemento e duas referências, chamadas previous e next, para o nodo anterior e posterior ao presente nodo, respectivamente. A classe possui os seguintes atributos:
  1. header - referência para o nodo armazenado no início da fila.
  2. tailer - referência para o nodo armazenado no fim da fila.
Os métodos especificados para o tipo abstrato de dados fila são:
  1. empty - verifica se a fila está vazia.
  2. offer - insere um novo elemento no fim da fila.
  3. peek - recupera o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  4. poll - recupera e remove o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  5. size - retorna a quantidade de elementos armazenados na fila.
(Goodrich, 2007) Desenvolva uma classe chamada Queue para representar o tipo abstrato de dados fila. Uma fila é uma estrutura de dados baseada no princípio FIFO, no qual o primeiro elemento inserido é o primeiro elemento retirado. A classe utiliza uma lista duplamente encadeada de inteiros para o armazenamento dos elementos. Uma lista duplamente encadeada (Doubly Linked List) é uma coleção de nodos (Node) que juntos formam uma ordem linear, no qual cada nodo é um objeto que armazena um elemento e duas referências, chamadas previous e next, para o nodo anterior e posterior ao presente nodo, respectivamente. A classe possui os seguintes atributos:
  1. capacity - capacidade máxima de elementos armazenados na fila.
  2. header - referência para o nodo armazenado no início da fila.
A classe possui dois construtores: o primeiro configura a capacidade máxima de elementos armazenados na fila com o valor padrão 100, e o segundo recebe como parâmetro a capacidade máxima de elementos armazenados na fila. Os métodos especificados para o tipo abstrato de dados fila são:
  1. empty - verifica se a fila está vazia.
  2. offer - insere um novo elemento no fim da fila, retornando true caso o novo elemento seja inserido no fim da fila, ou false caso a fila esteja cheia.
  3. peek - recupera o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  4. poll - recupera e remove o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  5. size - retorna a quantidade de elementos armazenados na fila.
(Goodrich, 2007) Desenvolva uma classe chamada Queue para representar o tipo abstrato de dados fila. Uma fila é uma estrutura de dados baseada no princípio FIFO, no qual o primeiro elemento inserido é o primeiro elemento retirado. A classe utiliza uma lista duplamente encadeada de inteiros para o armazenamento dos elementos. Uma lista duplamente encadeada (Doubly Linked List) é uma coleção de nodos (Node) que juntos formam uma ordem linear, no qual cada nodo é um objeto que armazena um elemento e duas referências, chamadas previous e next, para o nodo anterior e posterior ao presente nodo, respectivamente. A classe possui os seguintes atributos:
  1. capacity - capacidade máxima de elementos armazenados na fila.
  2. header - referência para o nodo armazenado no início da fila.
  3. tailer - referência para o nodo armazenado no fim da fila.
A classe possui dois construtores: o primeiro configura a capacidade máxima de elementos armazenados na fila com o valor padrão 100, e o segundo recebe como parâmetro a capacidade máxima de elementos armazenados na fila. Os métodos especificados para o tipo abstrato de dados fila são:
  1. empty - verifica se a fila está vazia.
  2. offer - insere um novo elemento no fim da fila, retornando true caso o novo elemento seja inserido no fim da fila, ou false caso a fila esteja cheia.
  3. peek - recupera o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  4. poll - recupera e remove o elemento do início da fila, ou retorna zero caso a fila esteja vazia.
  5. size - retorna a quantidade de elementos armazenados na fila.
Deitel, H. M. (2003). Java, como programar. 4ª edição. Porto Alegre: Bookman. 1.386 páginas. Goodrich, Michael. (2007). Estrutura de Dados e Algoritmos em Java. 4ª edição. Porto Alegre: Bookman. 600 páginas.