Как создать классы Человек и Автомобиль и присвоить автомобилю владельца?
- Создать класс Человек.
Свойства: имя; возраст.
Методы: конструктор, принимающий два параметра: имя и возраст; метод, выводящий в консоль информацию о человеке. - Создать класс Автомобиль.
Свойства: марка, модель, год выпуска, номерной знак; владелец.
Методы: конструктор, принимающий четыре параметра (т.е. все, кроме владельца): марка, модель, год выпуска, номерной знак;
присвоить владельца - метод должен принимать экземпляр класса Человек и хранить экземпляр класса Человек в соответствующем поле, если возраст больше 18, иначе выводить в консоль соответствующее сообщение;
метод, который выводит в консоль информацию об автомобиле и вызывает метод вывода информации класса Человек для вывода информации о владельце. Нужно несколько экземпляров класса Человек;
несколько экземпляров класса Автомобиль;
присвоить владельцев автомобилям.
Немного набросал но код неправильный. Помогите пожалуйста
class Human {
constructor(name, age) {
this.name = name
this.age = age
}
humanInfo() {
console.log(`name: ${this.name}, age: ${this.age}`);
}
}
class Car extends Human {
constructor(brand, model, yearOfProduction, licensePlate) {
super()
this.brand = brand
this.model = model
this.yearOfProduction = yearOfProduction
this.licensePlate = licensePlate
}
get age() {
return this.age
}
set age(value) {
if (value < 18) {
console.log('You are too young')
return
}
return this._age = value
}
}
const human = new Human("Human", 35);
const car = new Car('Toyota', 'Camry', 2018, 'X123BM')
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Автомобиль не может наследоваться от человека. Да и по заданию этого не требуется. Необходимо передавать в метод класса "машина" экземпляр класса "человек" для присвоения собственника.
Пример реализации классов:
class Human {
constructor(name, age) {
this.name = name;
this.age = age;
}
get info() {
console.log(`HUMAN: ${this.name} ${this.age}`)
}
}
class Car {
constructor(brand, model, year, regnum) {
this.brand = brand;
this.model = model;
this.year = year;
this.regnum = regnum;
}
owner(owner) {
if (owner.age < 18) {
console.log('ACHTUNG: You are too young')
} else { // Присваиваем владельца
this.ownerName = owner;
}
}
get carInfo() {
console.log(`CAR: ${this.brand} ${this.model} ${this.year} ${this.regnum}`);
// т.к. this.ownerName это экземпляр класса Human
// то нам доступны все его методы, вызываем .info(Предварительно проверив)
this.ownerName ? this.ownerName.info : console.log(`У ${this.brand}-${this.model} владельца нет`);
}
}
const vasya = new Human('Vasia', 20);
const petya = new Human('Petya', 17);
const masha = new Human('Masha', 22);
vasya.info;
petya.info;
const volvo = new Car('volvo', 'xc', 2020, 'q234er');
const vaz = new Car('VAZ', 'granta', 2022, 'a567df');
const gaz = new Car('GAZ', 'BB', 2021, 'm555kd');
volvo.owner(vasya);
vaz.owner(petya);
vaz.owner(masha);
volvo.carInfo;
vaz.carInfo;
gaz.carInfo;