Для создания программы на Java, имитирующей реестр домашних животных, нам понадобятся следующие классы: Animal, Dog, Cat, и т.д. Рассмотрим основной функционал по шагам:
1. Создание класса Animal:
public abstract class Animal {
protected String name;
protected int age;
protected String species;
public Animal(String name, int age, String species) {
this.name = name;
this.age = age;
this.species = species;
}
public abstract void printCommands();
}
2. Создание классов для конкретных животных (например, Dog и Cat), унаследованных от Animal:
public class Dog extends Animal {
public Dog(String name, int age) {
super(name, age, "Dog");
}
@Override
public void printCommands() {
System.out.println("Commands for Dog: Sit, Stay, Fetch");
}
}
public class Cat extends Animal {
public Cat(String name, int age) {
super(name, age, "Cat");
}
@Override
public void printCommands() {
System.out.println("Commands for Cat: Sleep, Meow, Scratch");
}
}
3. Создание класса для управления животными (AnimalRegistry):
import java.util.HashMap;
import java.util.Map;
public class AnimalRegistry {
private Map<String, Animal> animals;
public AnimalRegistry() {
this.animals = new HashMap<>();
}
public void addAnimal(String name, int age, String species) {
Animal animal;
if (species.equalsIgnoreCase("dog")) {
animal = new Dog(name, age);
} else if (species.equalsIgnoreCase("cat")) {
animal = new Cat(name, age);
} else {
System.out.println("Unknown species");
return;
}
animals.put(name, animal);
}
public void trainAnimal(String name, String command) {
Animal animal = animals.get(name);
if (animal != null) {
System.out.println("Training " + name + " to " + command);
// Implement training logic for specific commands
} else {
System.out.println("Animal not found");
}
}
public void printAnimalCommands(String name) {
Animal animal = animals.get(name);
if (animal != null) {
animal.printCommands();
} else {
System.out.println("Animal not found");
}
}
public void printAnimalCount() {
System.out.println("Total Animals: " + animals.size());
}
public void printAnimalsByAge() {
// Implement sorting and printing animals by age
}
}
4. Создание консольного интерфейса для взаимодействия с реестром:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
AnimalRegistry animalRegistry = new AnimalRegistry();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("1. Add Animal");
System.out.println("2. Train Animal");
System.out.println("3. Print Animal Commands");
System.out.println("4. Print Animal Count");
System.out.println("5. Print Animals By Age");
System.out.println("6. Exit");
System.out.print("Enter your choice: ");
int choice = scanner.nextInt();
scanner.nextLine(); // Consume the newline
switch (choice) {
case 1:
System.out.print("Enter name: ");
String name = scanner.nextLine();
System.out.print("Enter age: ");
int age = scanner.nextInt();
scanner.nextLine();
System.out.print("Enter species (Dog or Cat): ");
String species = scanner.nextLine();
animalRegistry.addAnimal(name, age, species);
break;
case 2:
System.out.print("Enter name of the animal to train: ");
String trainName = scanner.nextLine();
System.out.print("Enter command to train: ");
String command = scanner.nextLine();
animalRegistry.trainAnimal(trainName, command);
break;
case 3:
System.out.print("Enter name of the animal to print commands: ");
String printCommandName = scanner.nextLine();
animalRegistry.printAnimalCommands(printCommandName);
break;
case 4:
animalRegistry.printAnimalCount();
break;
case 5:
animalRegistry.printAnimalsByAge();
break;
case 6:
System.out.println("Exiting program.");
System.exit(0);
default:
System.out.println("Invalid choice. Please try again.");
}
}
}
}
Это базовая реализация программы для управления реестром домашних животных на Java. Вы можете доработать функционал, добавив возможности сохранения данных в файле, дополнительные команды для животных и другие опции управления.