Вопрос проверяет знание фундаментальных принципов объектно-ориентированного программирования и их практической пользы для проектирования и поддержки кода.
Объектно-ориентированное программирование (ООП) — это парадигма, которая организует код вокруг объектов, объединяющих данные и поведение. Его основные принципы служат фундаментом для создания масштабируемых и поддерживаемых приложений.
Инкапсуляция — это механизм сокрытия внутренних деталей реализации объекта и предоставления контролируемого доступа через публичные методы (геттеры/сеттеры). Это защищает данные от несанкционированного изменения и уменьшает связность между компонентами системы.
class BankAccount {
private balance: number;
constructor(initialBalance: number) {
this.balance = initialBalance;
}
public deposit(amount: number): void {
if (amount > 0) {
this.balance += amount;
}
}
public getBalance(): number {
return this.balance;
}
}
// Пользователь не может напрямую изменить balance, только через методы.Наследование позволяет создавать новый класс (дочерний) на основе существующего (родительского), перенимая его свойства и методы. Это способствует повторному использованию кода и созданию иерархий.
class Vehicle {
protected speed: number;
move() { console.log('Moving...'); }
}
class Car extends Vehicle {
private wheels = 4;
honk() { console.log('Beep beep!'); }
}
// Car автоматически получает поле speed и метод move().Полиморфизм означает «много форм» и позволяет объектам разных классов обрабатываться через общий интерфейс. Это достигается через переопределение методов или использование интерфейсов/абстрактных классов.
class Shape {
draw() {}
}
class Circle extends Shape {
draw() { console.log('Drawing a circle'); }
}
class Square extends Shape {
draw() { console.log('Drawing a square'); }
}
const shapes: Shape[] = [new Circle(), new Square()];
shapes.forEach(shape => shape.draw()); // Вызовется своя реализация для каждого типа.Абстракция — это процесс выделения существенных характеристик объекта, игнорируя нерелевантные детали. Она позволяет работать с высокоуровневыми концепциями, скрывая сложность.
// Абстрактный класс задаёт общий контракт.
abstract class DatabaseConnector {
abstract connect(): void;
abstract query(sql: string): any[];
}
// Конкретная реализация скрывает детали подключения к PostgreSQL.
class PostgresConnector extends DatabaseConnector {
connect() { /* ...логика подключения... */ }
query(sql: string) { /* ...выполнение запроса... */ return []; }
}
// Программист использует только методы connect и query, не вникая в детали драйвера.Вывод: Принципы ООП следует применять при проектировании сложных систем, где важны модульность, повторное использование кода и лёгкость поддержки. Они особенно полезны в долгосрочных проектах с большой командой разработчиков.
Уровень
Рейтинг:
5
Сложность:
3
Навыки
JavaScript
Java
Ключевые слова
Подпишись на iOS Developer в телеграм