Introdução aos Objectos/Exercício 01: Gato simples: Difference between revisions
From Wiki**3
No edit summary |
|||
| (11 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
{{TOCright}} | |||
== Problema == | == Problema == | ||
| Line 5: | Line 6: | ||
Um Gato tem como características o nome, a idade e o peso. | Um Gato tem como características o nome, a idade e o peso. | ||
Implemente o método de comparação (equals), por forma a considerar que dois gatos são iguais se as suas características forem iguais. | Implemente o método de comparação ('''equals'''), por forma a considerar que dois gatos são iguais se as suas características forem iguais. | ||
Implemente o método de apresentação (toString), por forma a produzir uma cadeia de caracteres onde seja apresentado o nome, a idade e o peso do gato. | Implemente o método de apresentação ('''toString'''), por forma a produzir uma cadeia de caracteres onde seja apresentado o nome, a idade e o peso do gato. | ||
Implemente métodos de acesso às variáveis internas do gato. | Implemente métodos de acesso às variáveis internas do gato. | ||
Implemente um programa ( | Implemente um programa ('''main''') que ilustre a utilização dos métodos anteriores. | ||
== Solução == | == Solução: diagrama de classes UML == | ||
== | == Solução: código Java == | ||
< | {{CollapsedCode|Ficheiro '''Cat.java'''| | ||
<source lang="java"> | |||
public class Cat { | public class Cat { | ||
/* | /** The cat's name. */ | ||
private String name; | |||
private String | |||
/* | /** The cat's age. */ | ||
private int age; | |||
private int | |||
/* | /** The cat's weight. */ | ||
private double weight; | |||
private double | |||
/** | /** | ||
| Line 43: | Line 39: | ||
*/ | */ | ||
public Cat(String name, int age, double weight) { | public Cat(String name, int age, double weight) { | ||
this.name = name; | |||
this.age = age; | |||
this.weight = weight; | |||
} | } | ||
/** | /** | ||
* @return the | * @return the name | ||
*/ | */ | ||
public String getName() { | public String getName() { | ||
return | return this.name; | ||
} | } | ||
| Line 58: | Line 54: | ||
* @param name the name to set | * @param name the name to set | ||
*/ | */ | ||
public void | public void setName(String name) { | ||
this.name = name; | |||
} | } | ||
| Line 66: | Line 62: | ||
*/ | */ | ||
public int getAge() { | public int getAge() { | ||
return | return this.age; | ||
} | } | ||
| Line 72: | Line 68: | ||
* @param age the age to set | * @param age the age to set | ||
*/ | */ | ||
public void | public void setAge(int age) { | ||
this.age = age; | |||
} | } | ||
| Line 80: | Line 76: | ||
*/ | */ | ||
public double getWeight() { | public double getWeight() { | ||
return | return this.weight; | ||
} | } | ||
| Line 86: | Line 82: | ||
* @param weight the weight to set | * @param weight the weight to set | ||
*/ | */ | ||
public void | public void setWeight(double weight) { | ||
this.weight = weight; | |||
} | } | ||
/* | /** @see java.lang.Object#equals(java.lang.Object) */ | ||
@Override | @Override | ||
public boolean equals(Object o) { | public boolean equals(Object o) { | ||
if (o instanceof Cat) { | if (o instanceof Cat) { | ||
Cat cat = (Cat) o; | Cat cat = (Cat) o; | ||
return | return this.name.equals(cat.name) && this.age == cat.age && this.weight == cat.weight; | ||
} | } | ||
return false; | return false; | ||
} | } | ||
/* | /** @see java.lang.Object#toString() */ | ||
@Override | @Override | ||
public String toString() { | public String toString() { | ||
return | return this.name + " (cat) (" + this.age + ":" + this.weight + ")"; | ||
} | } | ||
} | } | ||
</ | </source> | ||
}} | |||
=== Aplicação de Teste (main) === | |||
Embora, neste caso, apenas interesse a definição de '''main''', é necessária a definição da class '''Application''', pois em Java não é possível definir funções fora de classes. | |||
< | {{CollapsedCode|Ficheiro '''Application.java'''| | ||
<source lang="java"> | |||
public class Application { | public class Application { | ||
public static void main(String[] args) { | public static void main(String[] args) { | ||
Cat cat = new Cat("Tareco", 12, 3. | Cat cat = new Cat("Tareco", 12, 3.141); | ||
System.out.println(cat.equals(new Cat("Tareco", 12, 3.141))); // prints "true" | System.out.println(cat.equals(new Cat("Tareco", 12, 3.141))); // prints "true" | ||
System.out.println(cat.equals(new Cat("Pantufa", 1, 2.718))); // prints "false" | System.out.println(cat.equals(new Cat("Pantufa", 1, 2.718))); // prints "false" | ||
| Line 124: | Line 119: | ||
} | } | ||
} | } | ||
</ | </source> | ||
}} | |||
[[category:Ensino]] | [[category:Ensino]] | ||
[[category:PO]] | [[category:PO]] | ||
[[category:PO Exemplos]] | |||
Latest revision as of 01:01, 12 December 2020
Problema
Modele e implemente uma classe que represente uma versão muito simples do conceito Gato.
Um Gato tem como características o nome, a idade e o peso.
Implemente o método de comparação (equals), por forma a considerar que dois gatos são iguais se as suas características forem iguais.
Implemente o método de apresentação (toString), por forma a produzir uma cadeia de caracteres onde seja apresentado o nome, a idade e o peso do gato.
Implemente métodos de acesso às variáveis internas do gato.
Implemente um programa (main) que ilustre a utilização dos métodos anteriores.
Solução: diagrama de classes UML
Solução: código Java
| 'Ficheiro Cat.java' |
|---|
public class Cat {
/** The cat's name. */
private String name;
/** The cat's age. */
private int age;
/** The cat's weight. */
private double weight;
/**
* Fully specify the cat's initial state.
*
* @param name
* @param age
* @param weight
*/
public Cat(String name, int age, double weight) {
this.name = name;
this.age = age;
this.weight = weight;
}
/**
* @return the name
*/
public String getName() {
return this.name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return this.age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return the weight
*/
public double getWeight() {
return this.weight;
}
/**
* @param weight the weight to set
*/
public void setWeight(double weight) {
this.weight = weight;
}
/** @see java.lang.Object#equals(java.lang.Object) */
@Override
public boolean equals(Object o) {
if (o instanceof Cat) {
Cat cat = (Cat) o;
return this.name.equals(cat.name) && this.age == cat.age && this.weight == cat.weight;
}
return false;
}
/** @see java.lang.Object#toString() */
@Override
public String toString() {
return this.name + " (cat) (" + this.age + ":" + this.weight + ")";
}
}
|
Aplicação de Teste (main)
Embora, neste caso, apenas interesse a definição de main, é necessária a definição da class Application, pois em Java não é possível definir funções fora de classes.
| 'Ficheiro Application.java' |
|---|
public class Application {
public static void main(String[] args) {
Cat cat = new Cat("Tareco", 12, 3.141);
System.out.println(cat.equals(new Cat("Tareco", 12, 3.141))); // prints "true"
System.out.println(cat.equals(new Cat("Pantufa", 1, 2.718))); // prints "false"
System.out.println(cat);
}
}
|