Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Modelagem de Classes - Java, Notas de estudo de Informática

Modelagem de Classes - Java

Tipologia: Notas de estudo

2011

Compartilhado em 03/01/2011

alex-ouza-9
alex-ouza-9 🇧🇷

4.3

(3)

4 documentos

1 / 20

Documentos relacionados


Pré-visualização parcial do texto

Baixe Modelagem de Classes - Java e outras Notas de estudo em PDF para Informática, somente na Docsity! 1 Projetando Classes e Relacionamento (Herança) em Modelo de Classes A UML (Unifed Modeling Language) consiste de um número de elementos gráficos combinados para formar diagramas. Pelo fato de ser uma linguagem, a UML tem regras para a combinação desses elementos. O propósito dos diagramas é apresentar múltiplas visões de um sistema, o conjunto dessas múltiplas visões é chamado de modelo. É importante deixar claro que um modelo UML diz o que um sistema tem que fazer, mas não como implementa-lo. Diagrama de Classes Um diagrama de classes descreve os tipos de objetos no sistema e o relacionamento entre eles, mostrando os métodos e atributos de cada classe. Classe Uma classe pode ser representada por uma caixa contendo apenas o nome da classe. Veja abaixo: Através do diagrama acima podemos gerar o seguinte código Java. class ClienteBanco{ } Atributo A representação de atributos de uma classe em UML é feita diferente da que foi definida em Java: Declara-se primeiramente o nome do atributo e depois o tipo, separando-os pelo símbolo : (dois pontos). ClienteBanco 2 Veja abaixo: Através do diagrama acima podemos gerar o seguinte código Java. class ClienteBanco{ public String nome; String CPF; protected int idade; private double saldoConta; } A tabela abaixo ilustra a representação UML dos modificadores de acesso de visibilidade. Representação UML Código Java + public - private # protected ~ default OBS: Modificador default (friendly ou package): Quando não colocamos nenhum modificador de acesso sinalizamos implicitamente o modificador default. Os elementos demarcados por este modificador podem ser acessados por métodos ou construtores de classes definidas no mesmo pacote. Método A representação de métodos de uma classe em UML é feita de forma diferente da que foi definida em Java: Declara-se primeiramente o nome do método, e depois o tipo do valor de retorno do método. A declaração dos parâmetros do método deve ser feita semelhantemente àquela definida para os atributos: Primeiramente declara-se o nome, em seguida o tipo e ambos separados pelo símbolo : (dois pontos). ClienteBanco + nome: String ~ CPF: String # idade: int - saldoConta: double 5 Através do diagrama UML da página anterior podemos gerar o seguinte código Java. class Pessoa{ private String nome; protected int sexo; public static int MASCULINO = 1; public static int FEMININO = 2; Pessoa (String nome, int sexo){ this.nome = nome; this.sexo = sexo; } public String getNome(){ return nome; } public void setNome(String nome){ this.nome = nome; } public int getSexo(){ return sexo; } public void setSexo(int sexo){ this.sexo = sexo; } public static void main (String args[]){ } } 6 Exercícios Sobre Modelagem de Classes 1) A partir do diagrama de classe UML abaixo, implemente a classe Java correspondente. Para os métodos setDurabilidade e setComprimento, siga as regras abaixo: SetDurabilidade: Faça a atribuição apenas se o valor informado for maior que 0 (zero) e menor que 180. SetComprimento: Faça a atribuição apenas se o valor informado for maior que 0(zero) e menor que 25. R: public class Peca { public String nome; protected int comprimento; private int durabilidade; Peca(){ } public int getComprimento() { return comprimento; } public void setComprimento(int comprimento) { if (comprimento > 0 && comprimento < 25) this.comprimento = comprimento; } public int getDurabilidade() { return durabilidade; } public void setDurabilidade(int durabilidade) { if (durabilidade > 0 && durabilidade < 180) this.durabilidade = durabilidade; } public String getNome() { Peça + nome: String # comprimento: int - durabilidade: int ~ Peca() + getComprimento (): int + setComprimento (comprimento: int): void + getDurabilidade (): int + setDurabilidade (durabilidade: int): void + getNome (): String + setNome (nome: String): void 7 return nome; } public void setNome(String nome) { this.nome = nome; } } 2) A partir da classe Java abaixo, gere o diagrama de classe UML correspondente. public class Pessoa { private String nome; protected String rg; private String cpf; byte idade; String endereco; String foneResidencial; String foneComercial; String celular; protected String nomePai; protected String nomeMae; private String nomeConjuge; private boolean casado; private char sexo; public static char MASCULINO = 'M'; public static char FEMININO = 'F'; public Pessoa (String nome, String cpf, String rg, byte idade){ this.nome = nome; this.cpf = cpf; this.rg = rg; this.idade = idade; } public boolean isCasado() { return casado; } public void setCasado(boolean casado) { this.casado = casado; } public String getCelular() { return celular; } public void setCelular(String celular) { this.celular = celular; } public String getCpf() { return cpf; } 10 3) Implemente as classes Java referentes ao diagrama de classes UML abaixo. Durante a implementação, siga as regras abaixo para cada classe: Trapézio: Todos os métodos setters devem verificar se o valor do parâmetro é positivo e em caso afirmativo deve-se fazer a atribuição. O método calcularArea deve calcular a área do trapézio e armazenar este valor no atributo área da superClasse. Fórmula para cálculo da área do trapézio: ( ) 2 * alturabaseMenorbaseMaior A += Triângulo: Todos os métodos setters devem verificar se o valor do parâmetro é positivo e em caso afirmativo deve-se fazer a atribuição. O método calcularArea deve calcular a área do triângulo e armazenar este valor no atributo área da superClasse. Fórmula para calcular a área do triângulo: 2 * alturabase A = + Pessoa (nome: String, cpf: String, rg: String, idade: byte) + isCasado (): boolean + setCasado (casado: boolean): void + getCelular (): String + setCelular (celular: String): void + getCpf (): String + setCpf (cpf: String): void + getEndereco (): String + setEndereco (endereco: String): void + getFoneComercial (): String + setFoneComercial (foneComercial: String): void + getFoneResidencial (): String + setFoneResidencial (foneResidencial: String): void + getIdade (): byte + setIdade (idade: byte): void + getNome (): String + setNome (nome: String): void + getNomeConjuge (): String + setNomeConjuge (nomeConjuge: String): void + getNomeMae (): String + setNomeMae(nomeMae: String): void + getNomePai (): String + setNomePai (nomePai: String): void + getRg (): String + setRg (rg: String): void + getSexo (): char + setSexo (sexo: char): void + isMaiorIdade (): boolean 11 Triângulo Eqüilátero: O método calcularArea deve imprimir a seguinte mensagem: "Calculando a área de um triângulo equilátero" e em seguida chamar o método calcularArea da super classe. Por último imprima a seguinte mensagem: "A área do triângulo eqüilátero é:" e informe o valor calculado para a área. Triângulo Retângulo: O método calcularArea deve imprimir a seguinte mensagem: "Calculando a área de um triângulo retângulo", e em seguida chame o método calcularArea da super classe. Por último imprima a seguinte mensagem: "A área do triangulo retângulo é:" e informe o valor calculado para a área. FiguraGeometrica # área: double + calcularArea(): void Trapezio - baseMaior: double - baseMenor: double - altura: double + Trapezio (baseMaior: double, baseMenor: double, altura: double) + getBaseMaior(): double + setBaseMaior(baseMaior: double): void + getBaseMenor(): double + setBaseMenor(baseMenor: double): void + getAltura(): double + setAltura(altura: double) :void + calcularArea(): void Triangulo - base: double - altura: double + Triangulo (base: double, altura: double) + getBase(): double + setBase(base: double): void + getAltura(): double + setAltura(altura: double) :void + calcularArea(): void TrianguloEquilatero + TrianguloEquilatero (base: double, altura: double) + calcularArea(): void TrianguloRetangulo + TrianguloRetangulo (base: double, altura: double) + calcularArea(): void 12 R: public class FiguraGeometrica { protected double area; public void calcularArea(){ } } public class Trapezio extends FiguraGeometrica { private double baseMaior; private double baseMenor; private double altura; public Trapezio (double baseMaior, double baseMenor, double altura){ this.baseMaior = baseMaior; this.baseMenor = baseMenor; this.altura = altura; } public double getAltura() { return altura; } public void setAltura(double altura) { if (altura > 0) this.altura = altura; } public double getBaseMaior() { return baseMaior; } public void setBaseMaior(double baseMaior) { if (baseMaior > 0) this.baseMaior = baseMaior; } public double getBaseMenor() { return baseMenor; } public void setBaseMenor(double baseMenor) { if (baseMenor > 0) this.baseMenor = baseMenor; } public void calcularArea(){ double areaTrapezio; areaTrapezio = ((baseMaior + baseMenor)*altura) / 2; super.area = areaTrapezio; } } 15 public class No2 extends No1 { public String nome; protected int num2; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public int getNum2() { return num2; } public void setNum2(int num2) { this.num2 = num2; } } public class No3 extends No1 { String nome; private int num3; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public int getNum3() { return num3; } public void setNum3(int num3) { this.num3 = num3; } } public class No4 extends No2 { private String nome; private int num4; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public int getNum4() { return num4; } public void setNum4(int num4) { this.num4 = num4; } } 16 public class No5 extends No2 { protected String nome; protected int num5; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public int getNum5() { return num5; } public void setNum5(int num5) { this.num5 = num5; } } public class No6 extends No2 { public String nome; public int num6; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public int getNum6() { return num6; } public void setNum6(int num6) { this.num6 = num6; } } public class No7 extends No3 { private String nome; private int num7; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public int getNum7() { return num7; } public void setNum7(int num7) { this.num7 = num7; } } 17 R: No1 - nome: String # num1: int + getNome(): String + setNome(nome: String): void +getNum1(): int +setNum1(num1: int): void No2 + nome: String # num2: int + getNome(): String + setNome(nome: String): void +getNum2(): int +setNum2(num2: int): void No3 ~ nome: String - num3: int + getNome(): String + setNome(nome: String): void +getNum3(): int +setNum3(num3: int): void No4 - nome: String - num4: int + getNome(): String + setNome(nome: String): void +getNum4(): int +setNum4(num4: int): void No5 # nome: String # num5: int + getNome(): String + setNome(nome: String): void +getNum5(): int +setNum5(num5: int): void No6 + nome: String + num6: int + getNome(): String + setNome(nome: String): void +getNum6(): int +setNum6(num6: int): void No7 - nome: String - num7: int + getNome(): String + setNome(nome: String): void +getNum7(): int +setNum7(num7: int): void
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved