[POO] AA1 added
This commit is contained in:
parent
cfd5c922fa
commit
3279eff580
|
@ -0,0 +1,76 @@
|
|||
package aval.aa1;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Animal {
|
||||
public static int currentId = 1;
|
||||
private final int id;
|
||||
private String name;
|
||||
private int weight;
|
||||
private int age;
|
||||
private String sponsor;
|
||||
|
||||
public Animal(String name, int weight, int age, String sponsor) {
|
||||
this.id = Animal.currentId++;
|
||||
this.name = name;
|
||||
this.weight = weight;
|
||||
this.age = age;
|
||||
this.sponsor = sponsor;
|
||||
}
|
||||
|
||||
public Animal(String name, int weight, int age) {
|
||||
this(name, weight, age, null);
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setWeight(int weight) {
|
||||
if (weight <= 0)
|
||||
throw new IllegalArgumentException("Weight must be positive!");
|
||||
this.weight = weight;
|
||||
}
|
||||
public int getWeight() {
|
||||
return weight;
|
||||
}
|
||||
|
||||
public void setAge(int age) {
|
||||
if (age <= 0)
|
||||
throw new IllegalArgumentException("Age must be positive!");
|
||||
this.age = age;
|
||||
}
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
public void setSponsor(String sponsor) {
|
||||
this.sponsor = sponsor;
|
||||
}
|
||||
public String getSponsor() {
|
||||
return sponsor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("ID: %d\nName: %s\nAge: %d\nWeight: %d\nSponsor: %s", this.id, this.name, this.age, this.weight, this.sponsor == null ? "None" : sponsor);
|
||||
}
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Animal animal = (Animal) o;
|
||||
return id == animal.id && weight == animal.weight && age == animal.age && Objects.equals(name, animal.name) && Objects.equals(sponsor, animal.sponsor);
|
||||
}
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id, name, weight, age, sponsor);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package aval.aa1;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Bird extends Animal {
|
||||
private String habitat;
|
||||
|
||||
public Bird(String name, int weight, int age, String habitat, String sponsor) {
|
||||
super(name, weight, age, sponsor);
|
||||
this.habitat = habitat;
|
||||
}
|
||||
|
||||
public Bird(String name, int weight, int age, String habitat) {
|
||||
super(name, weight, age);
|
||||
this.habitat = habitat;
|
||||
}
|
||||
|
||||
public String gethabitat() {
|
||||
return this.habitat;
|
||||
}
|
||||
|
||||
public void sethabitat(String habitat) {
|
||||
this.habitat = habitat;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Bird of habitat " + habitat + "\n" + super.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
if (!super.equals(o)) return false;
|
||||
Bird bird = (Bird) o;
|
||||
return Objects.equals(habitat, bird.habitat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(super.hashCode(), habitat);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package aval.aa1;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Dog extends Animal {
|
||||
private final String breed;
|
||||
|
||||
public Dog(String name, int weight, int age, String breed, String sponsor) {
|
||||
super(name, weight, age, sponsor);
|
||||
this.breed = breed;
|
||||
}
|
||||
|
||||
public Dog(String name, int weight, int age, String breed) {
|
||||
super(name, weight, age);
|
||||
this.breed = breed;
|
||||
}
|
||||
|
||||
public String getBreed() {
|
||||
return this.breed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Dog of breed " + this.breed + "\n" + super.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
if (!super.equals(o)) return false;
|
||||
Dog dog = (Dog) o;
|
||||
return Objects.equals(breed, dog.breed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(super.hashCode(), breed);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
package aval.aa1;
|
||||
|
||||
public interface IPetShelter {
|
||||
public void addAnimal(Animal animal);
|
||||
public void removeAnimal(Animal animal);
|
||||
public Animal searchForAnimal(String name);
|
||||
public boolean sponsorAnimal(int animalId);
|
||||
public void listAllAnimals();
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
package aval.aa1;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
IPetShelter shelter = new PetShelter("Patudos");
|
||||
|
||||
int choice = 0;
|
||||
do {
|
||||
System.out.println("Choose an option:");
|
||||
System.out.println("1. Add animal");
|
||||
System.out.println("2. Remove animal");
|
||||
System.out.println("3. Search for animal");
|
||||
System.out.println("4. Sponsor an animal");
|
||||
System.out.println("5. View all animals");
|
||||
System.out.println("6. Exit");
|
||||
|
||||
choice = Integer.parseInt(scanner.nextLine());
|
||||
|
||||
switch (choice) {
|
||||
case 1:
|
||||
// adicionar animal
|
||||
System.out.println("Adding an animal.");
|
||||
System.out.print("Animal type (Dog/Rabbit/Bird): ");
|
||||
String newAnimalType = scanner.nextLine();
|
||||
System.out.print("Animal name: ");
|
||||
String newAnimalName = scanner.nextLine();
|
||||
System.out.print("Animal age: ");
|
||||
int newAnimalAge = Integer.parseInt(scanner.nextLine());
|
||||
System.out.print("Animal weight: ");
|
||||
int newAnimalWeight = Integer.parseInt(scanner.nextLine());
|
||||
System.out.print("Animal sponsor: ");
|
||||
String newAnimalSponsor = scanner.nextLine();
|
||||
Animal newAnimal;
|
||||
switch (newAnimalType) {
|
||||
case "Dog":
|
||||
System.out.print("Dog breed: ");
|
||||
String breed = scanner.nextLine();
|
||||
newAnimal = new Dog(newAnimalName, newAnimalWeight, newAnimalAge, breed, newAnimalSponsor);
|
||||
shelter.addAnimal(newAnimal);
|
||||
break;
|
||||
case "Rabbit":
|
||||
System.out.print("Rabbit fur size (small/large): ");
|
||||
String fur = scanner.nextLine();
|
||||
newAnimal = new Rabbit(newAnimalName, newAnimalWeight, newAnimalAge, fur, newAnimalSponsor);
|
||||
shelter.addAnimal(newAnimal);
|
||||
break;
|
||||
case "Bird":
|
||||
System.out.print("Bird habitat: ");
|
||||
String habitat = scanner.nextLine();
|
||||
newAnimal = new Bird(newAnimalName, newAnimalWeight, newAnimalAge, habitat, newAnimalSponsor);
|
||||
shelter.addAnimal(newAnimal);
|
||||
break;
|
||||
default:
|
||||
System.out.println("Invalid animal.");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
// remover animal
|
||||
System.out.print("Animal name: ");
|
||||
String removedAnimalName = scanner.nextLine();
|
||||
Animal removedAnimal = shelter.searchForAnimal(removedAnimalName);
|
||||
if (removedAnimal != null) {
|
||||
shelter.removeAnimal(removedAnimal);
|
||||
System.out.println("Animal removed.");
|
||||
} else {
|
||||
System.out.println("Animal not found.");
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
// procurar animal
|
||||
System.out.print("Animal name:");
|
||||
String searchAnimalName = scanner.nextLine();
|
||||
System.out.println(shelter.searchForAnimal(searchAnimalName));
|
||||
break;
|
||||
case 4:
|
||||
// apadrinhar animal
|
||||
System.out.print("Id of animal you want to sponsor: ");
|
||||
int sponsorId = Integer.parseInt(scanner.nextLine());
|
||||
if (shelter.sponsorAnimal(sponsorId))
|
||||
System.out.println("Animal of id '" + sponsorId + "' was sponsored");
|
||||
else
|
||||
System.out.println("Couldn't sponsor animal with id: " + sponsorId);
|
||||
break;
|
||||
case 5:
|
||||
// imprimir a informação de todos os animais
|
||||
shelter.listAllAnimals();
|
||||
break;
|
||||
case 6:
|
||||
System.out.println("Goodbye!");
|
||||
break;
|
||||
default:
|
||||
// imprimir mensagem de erro
|
||||
System.out.println("Invalid option.");
|
||||
break;
|
||||
}
|
||||
|
||||
} while (choice != 6);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
package aval.aa1;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class PetShelter implements IPetShelter {
|
||||
private String shelterName;
|
||||
private Animal[] animals;
|
||||
|
||||
public PetShelter(String shelterName) {
|
||||
this.shelterName = shelterName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addAnimal(Animal animal) {
|
||||
if (animals == null) {
|
||||
animals = new Animal[1];
|
||||
animals[0] = animal;
|
||||
} else {
|
||||
Animal[] newAnimals = new Animal[animals.length + 1];
|
||||
for (int i = 0; i < animals.length; i++) {
|
||||
newAnimals[i] = animals[i];
|
||||
}
|
||||
newAnimals[newAnimals.length - 1] = animal;
|
||||
animals = newAnimals;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAnimal(Animal animal) {
|
||||
Animal[] newAnimals = new Animal[animals.length - 1];
|
||||
int index = 0;
|
||||
for (Animal a : animals) {
|
||||
if (a.getId() != animal.getId()) {
|
||||
newAnimals[index] = a;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
animals = newAnimals;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Animal searchForAnimal(String name) {
|
||||
for (Animal a : animals)
|
||||
if (a.getName().equals(name))
|
||||
return a;
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sponsorAnimal(int animalId) {
|
||||
System.out.println("Sponsoring animal with id " + animalId + "...");
|
||||
System.out.print("Sponsor's name: ");
|
||||
String sponsorId = new Scanner(System.in).nextLine();
|
||||
for (Animal a : animals)
|
||||
if (a.getId() == animalId) {
|
||||
a.setSponsor(sponsorId);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void listAllAnimals() {
|
||||
for (Animal a : animals)
|
||||
System.out.println(a.toString()+"\n");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package aval.aa1;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Rabbit extends Animal {
|
||||
private String fur;
|
||||
|
||||
public Rabbit(String name, int weight, int age, String fur, String sponsor) {
|
||||
super(name, weight, age, sponsor);
|
||||
this.fur = fur;
|
||||
}
|
||||
|
||||
public Rabbit(String name, int weight, int age, String fur) {
|
||||
super(name, weight, age);
|
||||
this.fur = fur;
|
||||
}
|
||||
|
||||
public String getFur() {
|
||||
return this.fur;
|
||||
}
|
||||
|
||||
public void setfur(String fur) {
|
||||
this.fur = fur;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Rabbit of fur " + fur + "\n" + super.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
if (!super.equals(o)) return false;
|
||||
Rabbit rabbit = (Rabbit) o;
|
||||
return Objects.equals(fur, rabbit.fur);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(super.hashCode(), fur);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue