Work through these in order.
Create a User class with 2 properties: firstName and lastName. Hint: use this and constructor.
Use the new keyword and assign the instance in a variable.
Add a renderUserCard(user) function that accepts a User instance and renders a user card on the page (e.g. a div with firstName and lastName).
-
Add
getFullName: it should return the combined first and last name of the user. Use string concatenation or template literals andthisto read the properties. -
Add
render()onUser: it should render the user card on the page (same job asrenderUserCard(user)in exercise 2, but as an instance method). Usethis.getFullName()for the name you show on the card. -
Call
myUser.render()so the card appears on the page (you can stop usingrenderUserCardonce this works).
The CV that we will be making uses three classes: Job, Education and
CV. The CV class we have made for you (with some missing functionality). The Job and Education classes you need to create.
Create the classes Job and Education.
Jobhas five properties:id,title,description,startDateandendDate(the dates can be strings or actualDateobjects).Educationhas six properties:id,title,school,address,startDateandendDate.
class Job {
///...
}
class Education {
///...
}Now add the functionality for the methods in the CV class.
Remember: jobs and educations are just arrays of class instances. So use your array manipulation knowledge for the add and remove methods.
class CV {
constructor(email) {
this.jobs = [];
this.educations = [];
//this.email = ?
}
addJob(job) {
// add functionality here
}
removeJob(job) {
// add functionality here
}
addEducation(education) {
// add functionality here
}
removeEducation(education) {
// add functionality here
}
}-
Create a new
CVinstance using thenewkeyword, and save it in a variable calledmyCV. -
Apply the methods you have created on the
myCVobject. Create a fewJobandEducationobjects and add them to your CV. -
Remove a job and an education from
myCV. -
Log
myCVto the console, again, and check that the objects were removed correctly.
Add a method to the CV class called renderCV(). This method should render out the CV using HTML. Make sure, that view updates, when data is changed.
You're building a food delivery app. Customers browse restaurants, add items to their order, and a driver picks it up and delivers it.
Rules: paper only — no code yet!
For each class you identify, write down:
- Its name
- Its properties
- Its methods
- How it relates to the other classes
Think about:
- What classes do you need?
- What properties does each class have?
- What methods does each class need?
- How do the classes relate to each other?
- Does anything share behavior? How would you handle that?
When done, compare your design with others: which classes did different people pick? Did anyone make Driver extends User? How did you handle the Order/Restaurant relationship?
Now that you've designed FoodDash on paper, build it in code.
- Create a
Restaurantclass with anameproperty and amenuproperty (array of items, each with anameandprice). - Create an
Orderclass that takes an array of items and aRestaurantinstance.- Add an
addItem(item)method and aremoveItem(item)method. - Add an
async calculateTotal()method that sums the prices of all items in the order.
- Add an
- Create a
Userclass that receives aname,email, androleobject via the constructor. The role object must have aperform(name)method.- Add a
doWork()method that callsthis.role.perform(this.name).
- Add a
- Create two role objects (
customerRoleanddriverRole), each with aperform(name)method that logs what that role does.
Bonus: Add a static Order.sortByTotal(orders) method that sorts an array of orders by total price.
A turn-based monster battle game — design and OOP in action.
You have a starter project in ./oop-monster-arena/. Follow the instructions in its README.
The challenge covers:
- Modeling game entities as classes (
Monster,Arena,Attack) - Using composition to give monsters different attack strategies
- Inheritance for shared monster behavior
- Turn-based game loop logic