Реализация на языке C++: различия между версиями
Материал из LERNADO: Информатика и техники
Нет описания правки |
Нет описания правки |
||
| Строка 1: | Строка 1: | ||
<iframe key="lernbase" level="video" path="videos/embed/hfJRLJ7u7n5fHoXqgXAJ5a?subtitle=ru&muted=1&title=0" width="800" height="600" allowfullscreen="true"/> | <iframe key="lernbase" level="video" path="videos/embed/hfJRLJ7u7n5fHoXqgXAJ5a?subtitle=ru&muted=1&title=0" width="800" height="600" allowfullscreen="true"/> | ||
== Краткое содержание лекции == | |||
**Введение в объектно-ориентированное программирование (ООП)** | |||
* ООП - это парадигма программирования, поэтому полная ее реализация в каком-то одном языке невозможна. | |||
* Каждый язык реализует ООП с теми или иными допущениями. | |||
* Ключевые языки: C++, Python, JavaScript. | |||
* В курсе будут рассмотрены C++ и Python. | |||
**Основные понятия ООП** | |||
* **Объект (экземпляр):** Имеет внешнюю сторону (методы и свойства) и внутреннее состояние (данные). | |||
* **Методы экземпляра:** Действия, которые можно выполнять с объектом. | |||
* **Свойства экземпляра:** Характеристики объекта (цвет, вкус и т.д.). | |||
* Внутреннее состояние описывается **данными экземпляра** (переменными). | |||
* Экземпляры одного класса обязательно имеют одинаковые методы и свойства. | |||
**Реализация классов в C++** | |||
* Каждому классу можно сопоставить набор переменных, составляющих данные экземпляра. | |||
* Используется класс-ориентированный подход, при котором сначала описывается класс, а затем создаются экземпляры этого класса. | |||
* Каждый класс обычно реализуется в двух файлах: | |||
** файл `myclass.h` содержит описание класса; | |||
** файл `meclass.cpp` исходные тексты функций, реализующих методы экземпляра. | |||
* Создавая новый класс, мы создаем новый тип данных. | |||
* Функция и метод - это разные вещи: метод = действие, функция = способ реализации метода. | |||
* В C++ экземпляр, с которым ведется работа, задается указателем `this`. | |||
* Функция-член класса, реализующая метод экземпляра, может иметь и другие параметры, помимо `this`. | |||
* При объявлении функции параметр `this` не записывается. | |||
* Жизненный цикл объекта состоит из 5 этапов: создание, инициализация, использование, деинициализация, уничтожение. | |||
** Для создания объекта используется метод `operator new`; | |||
** для инициализации объекта используется метод-конструктор; | |||
** для деинициализации объекта используется метод-деструктор; | |||
** для уничтожения объекта используется метод `operator delete`. | |||
* Инициализация присваивает начальные значения. | |||
* Деинициализация освобождает ресурсы, связанные с переменной (например, закрытие открытого файла). | |||
* Создание переменной в основном включает в себя выделение памяти. | |||
* Уничтожение объекта включает в себя освобождение памяти. | |||
* Создание экземпляра и инициализация - это отдельные этапы. | |||
* Создание экземпляра почти всегда выполняется стандартным способом. | |||
* Программировать операторы `new` и `delete` вручную редко бывает необходимо. | |||
* Метод, который инициализирует переменную, называется конструктором. | |||
* Имя метода-конструктора всегда совпадает с именем класса. | |||
* Конструктор умолчания используется при создании переменной без указания параметров. | |||
* Конструктор копирования вызывается, когда создается копияя переменной того же типа. | |||
* Деинициализация переменной выполняется функцией, называемой деструктором. | |||
* Имя деструктора начинается со знака тильды (~) за которым следует имя класса, и у него никогда не бывает параметров. | |||
* Ни конструкторы, ни деструкторы не имеют возвращаемых значений. | |||
* Деструкторы следует объявлять с ключевым словом "virtual". | |||
* Необходимо объявить функцию присваивания `operator=`. | |||
* Оператор присваивания вызывается во время простого присваивания (X = Y), где X и Y имеют один и тот же тип. | |||
* Присваивание отличается от инициализации. | |||
* Четыре функции должны присутствовать в каждом классе C++ по историческим причинам: | |||
** конструктор умолчания; | |||
** конструктор копирования; | |||
** деструктор; | |||
** оператор присваивания. | |||
**Инкапсуляция** | |||
* Инкапсуляция означает, что данные экземпляра/состояние объекта могут быть изменены только путем вызова его методов. | |||
* Ключевое слово `private`: все, что следует за ним, может быть изменено только изнутри методов экземпляра. | |||
* Ключевое слово `public`: все, что следует за ним, доступно любым способом. | |||
**Свойства в C++** | |||
* Общепринятой реализации свойств в C++ не существует. | |||
* Свойства экземпляра используются, но реализация варьируется в разных библиотеках (например, Qt имеет один способ, другие библиотеки - другой). | |||
* Самый простой способ реализовать свойство: написать функцию, которая возвращает значение свойства. | |||
Версия от 22:54, 4 марта 2026
Краткое содержание лекции
- Введение в объектно-ориентированное программирование (ООП)**
- ООП - это парадигма программирования, поэтому полная ее реализация в каком-то одном языке невозможна.
- Каждый язык реализует ООП с теми или иными допущениями.
- Ключевые языки: C++, Python, JavaScript.
- В курсе будут рассмотрены C++ и Python.
- Основные понятия ООП**
- **Объект (экземпляр):** Имеет внешнюю сторону (методы и свойства) и внутреннее состояние (данные).
- **Методы экземпляра:** Действия, которые можно выполнять с объектом.
- **Свойства экземпляра:** Характеристики объекта (цвет, вкус и т.д.).
- Внутреннее состояние описывается **данными экземпляра** (переменными).
- Экземпляры одного класса обязательно имеют одинаковые методы и свойства.
- Реализация классов в C++**
- Каждому классу можно сопоставить набор переменных, составляющих данные экземпляра.
- Используется класс-ориентированный подход, при котором сначала описывается класс, а затем создаются экземпляры этого класса.
- Каждый класс обычно реализуется в двух файлах:
- файл `myclass.h` содержит описание класса;
- файл `meclass.cpp` исходные тексты функций, реализующих методы экземпляра.
- Создавая новый класс, мы создаем новый тип данных.
- Функция и метод - это разные вещи: метод = действие, функция = способ реализации метода.
- В C++ экземпляр, с которым ведется работа, задается указателем `this`.
- Функция-член класса, реализующая метод экземпляра, может иметь и другие параметры, помимо `this`.
- При объявлении функции параметр `this` не записывается.
- Жизненный цикл объекта состоит из 5 этапов: создание, инициализация, использование, деинициализация, уничтожение.
- Для создания объекта используется метод `operator new`;
- для инициализации объекта используется метод-конструктор;
- для деинициализации объекта используется метод-деструктор;
- для уничтожения объекта используется метод `operator delete`.
- Инициализация присваивает начальные значения.
- Деинициализация освобождает ресурсы, связанные с переменной (например, закрытие открытого файла).
- Создание переменной в основном включает в себя выделение памяти.
- Уничтожение объекта включает в себя освобождение памяти.
- Создание экземпляра и инициализация - это отдельные этапы.
- Создание экземпляра почти всегда выполняется стандартным способом.
- Программировать операторы `new` и `delete` вручную редко бывает необходимо.
- Метод, который инициализирует переменную, называется конструктором.
- Имя метода-конструктора всегда совпадает с именем класса.
- Конструктор умолчания используется при создании переменной без указания параметров.
- Конструктор копирования вызывается, когда создается копияя переменной того же типа.
- Деинициализация переменной выполняется функцией, называемой деструктором.
- Имя деструктора начинается со знака тильды (~) за которым следует имя класса, и у него никогда не бывает параметров.
- Ни конструкторы, ни деструкторы не имеют возвращаемых значений.
- Деструкторы следует объявлять с ключевым словом "virtual".
- Необходимо объявить функцию присваивания `operator=`.
- Оператор присваивания вызывается во время простого присваивания (X = Y), где X и Y имеют один и тот же тип.
- Присваивание отличается от инициализации.
- Четыре функции должны присутствовать в каждом классе C++ по историческим причинам:
- конструктор умолчания;
- конструктор копирования;
- деструктор;
- оператор присваивания.
- Инкапсуляция**
- Инкапсуляция означает, что данные экземпляра/состояние объекта могут быть изменены только путем вызова его методов.
- Ключевое слово `private`: все, что следует за ним, может быть изменено только изнутри методов экземпляра.
- Ключевое слово `public`: все, что следует за ним, доступно любым способом.
- Свойства в C++**
- Общепринятой реализации свойств в C++ не существует.
- Свойства экземпляра используются, но реализация варьируется в разных библиотеках (например, Qt имеет один способ, другие библиотеки - другой).
- Самый простой способ реализовать свойство: написать функцию, которая возвращает значение свойства.