Story points | 3 |
Tags | oop skill/oop |
Hard Prerequisites | |
IMPORTANT: Please review these prerequisites, they include important information that will help you with this content. | |
|
Your directory structure should look like this:
├── src
| └── animals.js
└── package.json
Note: You will be asked to create a number of classes. Make sure you export
them using the following syntax:
module.exports = {class1Name, class2Name, ...}
Note: Your package.json
should be valid. If it is a blank file then your project will not be marked as competent. If you are not sure what a valid package.json should look like, then look it up!
Your directory structure should look like this:
├── animals
│ └── animals.py
├── setup.py
Please make use of Gradle from the command line to set up your project. You can learn more about Gradle here:
[TODO] TOPIC: African Coding Network SyllabusWhen you use gradle to create your project, give your project the following name: animals
Your directory structure should look like this:
├── app
| ├── build.gradle
| └── src
| └── main
| └── java
| └── animals
| └── Animals.java <-------- names are important
| └── Cat.java <-------- names are important
| └── Dog.java <-------- names are important
| └── Home.java <-------- names are important
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
...
Make sure that all of the classes you define are within the animals
package. Do this by including a package declaration at the top of each of your java files.
In this challenge, you will create 3 classes.
Animal
Dog
and Cat
class both extend Animal
class (a dog is an animal, and a cat is an animal).Dog
and Cat
class should only have one function, which is their own implementation of the sound()
function. This is polymorphism.// Java
? dog1 = new Dog()
? dog2 = new Dog("Simba")
dog1.eat() // public returns 'Rax eats'
dog1.sound() // returns 'Bark'
dog2.eat() // returns 'Simba eats'
dog2.sound() // returns 'Bark'
? cat1 = new Cat()
? cat2 = new Cat("Smokey")
cat1.eat() // returns 'Stormy eats'
cat1.sound() // returns 'Meow'
cat2.eat() // returns 'Smokey eats'
cat2.sound() // returns 'Meow'
// Make sure all constructors, eat and sound are all public methods
// JavaScript
let dog1 = new Dog();
let dog2 = new Dog("Simba")
dog1.eat(); // returns 'Rax eats'
dog1.sound(); // returns 'Bark'
dog2.eat() // returns 'Simba eats'
dog2.sound() // returns 'Bark'
let cat1 = new Cat();
let cat2 = new Cat("Smokey")
cat1.eat(); // returns 'Stormy eats'
cat1.sound(); // returns 'Meow'
cat2.eat() // returns 'Smokey eats'
cat2.sound() // returns 'Meow'
# Python
dog1 = Dog()
dog2 = Dog('Simba')
dog1.eat() # returns 'Rax eats'
dog1.sound() # returns 'Bark'
dog2.eat() # returns 'Simba eats'
dog2.sound() # returns 'Bark'
cat1 = Cat()
cat2 = Cat('Smokey')
cat1.eat() # returns 'Stormy eats'
cat1.sound() # returns 'Meow'
cat2.eat() # returns 'Smokey eats'
cat2.sound() # returns 'Meow'
Home
. Lots of people have dogs and cats in their homes. Home
should have a function called adopt pet
that takes any Animal
as an input and returns the number of pets that have been adopted thus far. The new pet should be stored in the Home
object in an array/list. The Home
object should also have a function called make all sounds
. It should work like this:// Java
Home home = new Home()
? dog1 = new Dog()
? dog2 = new Dog()
? cat = new Cat()
home.makeAllSounds() // this returns an empty ArrayList
home.adoptPet(dog1) // 1
home.makeAllSounds()
// this returns an ArrayList of Strings:
// ["Bark"]
home.adoptPet(cat) // 2
home.makeAllSounds()
// this returns an ArrayList of Strings:
// ["Bark", "Meow"]
home.adoptPet(dog2) // 3
home.makeAllSounds()
// this returns an ArrayList of Strings:
// ["Bark", "Meow", "Bark"]
// adoptPet and makeAllSounds must be public methods
// JavaScript
let home = new Home();
let dog1 = new Dog();
let dog2 = new Dog();
let cat = new Cat();
home.makeAllSounds();// this returns an empty array
home.adoptPet(dog1); // 1
home.makeAllSounds();
// this returns:
// ["Bark"]
home.adoptPet(cat); // 2
home.makeAllSounds();
// this returns:
// ["Bark", "Meow"]
home.adoptPet(dog2); // 3
home.makeAllSounds();
// this returns:
// ["Bark", "Meow", "Bark"]
# Python
home = Home()
dog1 = Dog()
dog2 = Dog()
cat = Cat()
home.make_all_sounds() // this returns an empty ArrListay
home.adopt_pet(dog1) # 1
home.make_all_sounds()
# this returns:
# ["Bark"]
home.adopt_pet(cat) # 2
home.make_all_sounds()
# this returns:
# ["Bark", "Meow"]
home.adopt_pet(dog2) # 3
home.make_all_sounds
# this returns:
# ["Bark", "Meow", "Bark"]
Add some functionality to adopt pet
so that an error/exception, gets raised/thrown if you try to adopt the same pet twice. Make sure that the error has a useful message!
For example,
home.adoptPet(dog1) // returns the number of pets that have been adopted thus far
home.adoptPet(dog1) // an error/exception gets raised
Consider the following OOP concepts. Can you see and explain how they are demonstrated in this project?
makeAllSounds
method should return an array of the exact strings specified in the instructions. e.g “Bark”, “Meow”