Программа курса← Объектно ориентированное программирование
1История ООП
2Объект и Класс
3Базовые концепции ООП
4Принцип проектирования GRASP
5Принцип проектирования SOLID
6Паттерны GOF

Объект как экземпляр класса

Что такое объект (или экземпляр)?

Вернемся к нашему чертежу машины. Если класс – это чертеж, то объект (или экземпляр) – это конкретная машина, построенная по этому чертежу.

Вы можете построить несколько разных машин по одному и тому же чертежу: одна – гоночная и красная, другая – грузовая и синяя. Аналогично, из одного класса можно создать множество объектов.

Объект – это конкретная сущность в памяти компьютера, созданная по описанию класса. Она имеет конкретные значения атрибутов и может выполнять методы.

Создание объектов (экземпляров) класса Car

namespace Lecture1;

class Program
{
    static void Main(string[] args)
    {
        // Создаем два объекта (экземпляра) класса Car
        var myCar = new Car("красный", "Tesla Model S");
        var yourCar = new Car("синий", "Toyota Camry");

        // Каждый объект имеет свои собственные атрибуты
        Console.WriteLine(myCar.Color); // Выведет: красный
        Console.WriteLine(yourCar.Model); // Выведет: Toyota Camry

        // И может выполнять методы
        myCar.StartEngine(); // Выведет: Двигатель запущен!
        yourCar.Drive(); // Выведет: Сначала заведи двигатель!
    }
}
int main() {
    // Создаём два объекта (экземпляра) класса Car – прямо на стеке
    Car my_car("красный", "Tesla Model S");
    Car your_car("синий", "Toyota Camry");

    // Каждый объект имеет свои собственные атрибуты
    std::cout << my_car.color() << std::endl;   // Выведет: красный
    std::cout << your_car.model() << std::endl; // Выведет: Toyota Camry

    // И может выполнять методы
    my_car.StartEngine(); // Выведет: Двигатель запущен!
    your_car.Drive();     // Выведет: Сначала заведи двигатель!

    return 0;
}
func main() {
	// Создаём два объекта (экземпляра) типа Car
	myCar := NewCar("красный", "Tesla Model S")
	yourCar := NewCar("синий", "Toyota Camry")

	// У каждого объекта свои собственные значения полей
	fmt.Println(myCar.Color)   // Выведет: красный
	fmt.Println(yourCar.Model) // Выведет: Toyota Camry

	// И может выполнять методы
	myCar.StartEngine() // Выведет: Двигатель запущен!
	yourCar.Drive()     // Выведет: Сначала заведи двигатель!
}
# Создаем два объекта (экземпляра) класса Car
my_car = Car("красный", "Tesla Model S")
your_car = Car("синий", "Toyota Camry")

# Каждый объект имеет свои собственные атрибуты
print(my_car.color)   # Выведет: красный
print(your_car.model) # Выведет: Toyota Camry

# И может выполнять методы
my_car.start_engine() # Выведет: Двигатель запущен!
your_car.drive()      # Выведет: Сначала заведи двигатель!
// Создаём два объекта (экземпляра) класса Car
const myCar = new Car("красный", "Tesla Model S");
const yourCar = new Car("синий", "Toyota Camry");

// Каждый объект имеет свои собственные атрибуты
console.log(myCar.color);   // Выведет: красный
console.log(yourCar.model); // Выведет: Toyota Camry

// И может выполнять методы
myCar.startEngine(); // Выведет: Двигатель запущен!
yourCar.drive();     // Выведет: Сначала заведи двигатель!
public class Program {
    public static void main(String[] args) {
        // Создаём два объекта (экземпляра) класса Car
        Car myCar = new Car("красный", "Tesla Model S");
        Car yourCar = new Car("синий", "Toyota Camry");

        // Каждый объект имеет свои собственные атрибуты
        System.out.println(myCar.getColor());   // Выведет: красный
        System.out.println(yourCar.getModel()); // Выведет: Toyota Camry

        // И может выполнять методы
        myCar.startEngine(); // Выведет: Двигатель запущен!
        yourCar.drive();     // Выведет: Сначала заведи двигатель!
    }
}
fun main() {
    // Создаём два объекта (экземпляра) класса Car
    val myCar = Car("красный", "Tesla Model S")
    val yourCar = Car("синий", "Toyota Camry")

    // Каждый объект имеет свои собственные атрибуты
    println(myCar.color)   // Выведет: красный
    println(yourCar.model) // Выведет: Toyota Camry

    // И может выполнять методы
    myCar.startEngine() // Выведет: Двигатель запущен!
    yourCar.drive()     // Выведет: Сначала заведи двигатель!
}

Основное отличие класса от объекта

Класс Объект (Экземпляр)
Это шаблон, описание или концепция. Это конкретная реализация класса.
Это абстракция (как “Автомобиль вообще”). Это конкретная сущность (как “Мой красный Tesla”).
Объявляется один раз. Создается много раз на основе одного класса.
Не занимает память до создания объектов. Занимает память при своем создании.

Простая аналогия: Класс CookieCutter – это формочка для печенья. Объекты cookie1, cookie2 – это сами печенья, сделанные с помощью этой формочки.

Итог: Класс – это общая идея, а объект – ее материальное воплощение. Понимание этой разницы – ключ к освоению объектно-ориентированного программирования. Вы создаете классы, чтобы описать сущности вашего мира, и создаете объекты этих классов, чтобы работать с ними в вашей программе.