Перейти к содержимому

Зачем нужны классы c

  • автор:

Для чего нужны классы, если можно все сделать в простой функции? (в C++) [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.

Закрыт 8 лет назад .

Изучаю сейчас классы в C++. Для чего они нужны, если можно все сделать в простой функции? Только для того, чтобы все было в объектах? И еще такой вопрос. Видел, как в классах сразу функции написаны, и видел, как написаны только скелеты функций. Для чего?

Отслеживать
13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
задан 20 фев 2015 в 10:25
409 2 2 золотых знака 11 11 серебряных знаков 26 26 бронзовых знаков

5 ответов 5

Сортировка: Сброс на вариант по умолчанию

Этот вопрос, скорее, можно перестроить в более широкий — зачем нужно ООП? Почитайте статью и про ООП вообще. Это действительно довольно большая тема для одного ответа на данном ресурсе. Думаю, поняв концепцию ООП, что такое объект, в чем разница между объектом и классом, Вы придете к выводу, зачем и когда это нужно.

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

Cat cat; Dog dog; cat = new Cat(); //создаем кота dog = new Dog(); //создаем собаку cat.meow(); //кот мяукает dog.gav(); //пес лает 

Еще понять многие вещи помогает игровая форма обучения. Попробуйте создать виртуальную рыбку, которая имеет свои координаты (например, в аквариуме) по x, y и z, у нее есть цвет, размер, она двигается, кушает, может размножаться. Создать эту рыбку, не прибегая к ООП, довольно сложно, а еще сложнее будет дополнять ее новыми фичами и сопровождать. В ООП это не составляет большого труда.

Обновлено:

Скелеты функций в классе-родителе — это абстракция. Например абстрактный класс Animal , нельзя будет создать объект (т.к. класс абстрактный), ведь не существует объекта просто животного. У него есть абстрактный метод breathing() (дыхание). В дочерних классах (не абстрактных), наличие абстрактного метода breathing() в Animal будет принуждать нас переопределить его. Нам нужно будет переопределить дыхание, например, для рыбы одним способом, для собаки — другим.

В двух словах — абстрактный класс — класс, от которого нельзя создать экземпляр. Служит для хранения общей логики. Абстрактный метод (скелет) — требует от программиста переопределения в дочерних классах. Логика у каждого может быть своя, а наличие обязательно.

Что такое классы в объектно-ориентированном программировании

Что такое классы в объектно-ориентированном программировании

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

Рассказываем, что такое классы в объектно-ориентированных языках, по каким принципам работают и чем отличаются.

Зачем нужны классы в программировании

ООП — это способ написания программ, где структуру создают из объектов, которые взаимодействуют между собой. На базе ООП построены языки Java, Swift, Python, PHP, JavaScript и Ruby.

Основа ООП — класс — способ отобразить предмет реального мира с помощью атрибутов. Например, множество классов используют как «чертежи» для компьютерного отображения домов, машин, деревьев, животных и любых других объектов, которые нужно смоделировать. Класс в программировании состоит из данных и кода. Данные отображают предметы или абстрактные понятия, а код ими управляет.

Класс ООП имеет набор атрибутов и характеристик. Каждая характеристика — это поле класса. Взаимодействовать с полями позволяют методы класса — операторы и функции для определенного действия.

Если в ООП есть задача описать реальный объект — например, книгу — вы должны задать ее характеристики (свойства объекта): цвет, размер, автор, год выпуска, жанр. У книги есть и функции: выдача текстовой или графической информации.

Задав программе характеристики и функции, мы обобщили данные и создали объект. Если мы знаем, что множество книг соответствует характеристикам, то можем использовать объект как шаблон для создания других. Шаблон, который задает начальные характеристики для объектов, — это и есть класс.

ООП позволяет разбить сложные задачи на простые и не прописывать функции для каждого объекта.

Как работают классы

ООП построен на четырех основных принципах: абстрагирование, полиморфизм, наследование и инкапсуляция.

Абстрагирование — это отсечение несущественных характеристик для класса и прописывание ключевых. Например, и для класса Car, и для класса Plane можно указать то, что они сделаны из металла, но это не ключевая характеристика, а вот способность ездить (для первого класса) и летать (для второго) — существенная. Идея абстрагирования в том, чтобы задать минимум полей для объекта, оставив важные.

Идея наследования состоит в передаче характеристик от одного класса к другому, у которого есть также и свои характеристики. Классы, на основе которых создаются другие, называются родительскими или суперклассами. Те, которые унаследовали характеристики, — классами-потомками или подклассами.

Например, компания собирается в 2022 году выпустить в производство новую серию ноутбуков с улучшенными видеокартами, процессорами и большим объемом памяти. Но разрабатывать модель с нуля долго. Если в компании уже есть линейка, которая отвечает запросам (суперкласс Laptops), то класс NewLaptops унаследует атрибуты суперкласса и к нему лишь добавят новые характеристики.

Для разграничения доступа к объектам используется инкапсуляция. Это способ объединения данных, который запрещает доступ части компонентов программы к другим ее фрагментам. Он позволяет работать с частью программы и не запускать ненужные в этом участке кода функции. Класс NewLaptops отображает для юзера пользовательский интерфейс ноутбука, но будет скрывать ненужные сведения. Например, как операционная система распределяет время процессора для решения задач.

Идею полиморфизма кратко описывают так: «один интерфейс — множество реализаций» — с помощью одной функции можно обработать данные, принадлежащие к разным классам. Если компания производит разную технику с видеокамерами, код, который описывает свойства камеры, будет подходить для нескольких классов. Например, NewLaptops и Phones.

курсы по теме:

Python для разработки и анализа данных

Классы в С++

Классы и объекты в С++ являются основными концепциями объектно-ориентированного программирования — ООП. Объектно-ориентированное программирование — расширение структурного программирования, в котором основными концепциями являются понятия классов и объектов. Основное отличие языка программирования С++ от С состоит в том, что в С нет классов, а следовательно язык С не поддерживает ООП, в отличие от С++.

Чтобы понять, для чего же в действительности нужны классы, проведём аналогию с каким-нибудь объектом из повседневной жизни, например, с велосипедом. Велосипед — это объект, который был построен согласно чертежам. Так вот, эти самые чертежи играют роль классов в ООП. Таким образом классы — это некоторые описания, схемы, чертежи по которым создаются объекты. Теперь ясно, что для создания объекта в ООП необходимо сначала составить чертежи, то есть классы. Классы имеют свои функции, которые называются методами класса. Передвижение велосипеда осуществляется за счёт вращения педалей, если рассматривать велосипед с точки зрения ООП, то механизм вращения педалей — это метод класса. Каждый велосипед имеет свой цвет, вес, различные составляющие — всё это свойства. Причём у каждого созданного объекта свойства могут различаться. Имея один класс, можно создать неограниченно количество объектов (велосипедов), каждый из которых будет обладать одинаковым набором методов, при этом можно не задумываться о внутренней реализации механизма вращения педалей, колёс, срабатывания системы торможения, так как всё это уже будет определено в классе. Разобравшись с назначением класса, дадим ему грамотное определение.

Классы в С++ — это абстракция описывающая методы, свойства, ещё не существующих объектов. Объекты — конкретное представление абстракции, имеющее свои свойства и методы. Созданные объекты на основе одного класса называются экземплярами этого класса. Эти объекты могут иметь различное поведение, свойства, но все равно будут являться объектами одного класса. В ООП существует три основных принципа построения классов:

  1. Инкапсуляция — это свойство, позволяющее объединить в классе и данные, и методы, работающие с ними и скрыть детали реализации от пользователя.
  2. Наследование — это свойство, позволяющее создать новый класс-потомок на основе уже существующего, при этом все характеристики класса родителя присваиваются классу-потомку.
  3. Полиморфизм — свойство классов, позволяющее использовать объекты классов с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Каждое свойство построения классов мы рассмотрим подробно по мере необходимости, а пока просто запомните эти три. А теперь вернёмся к классам, для начала рассмотрим структуру объявления классов.

// объявление классов в С++ class /*имя класса*/ < private: /* список свойств и методов для использования внутри класса */ public: /* список методов доступных другим функциям и объектам программы */ protected: /*список средств, доступных при наследовании*/ >;

Объявление класса начинается с зарезервированного ключевого слова class, после которого пишется имя класса. В фигурных скобочках, строки 3 — 10 объявляется тело класса, причём после закрывающейся скобочки обязательно нужно ставить точку с запятой, строка 10. В теле класса объявляются три метки спецификации доступа, строки 4, 6, 8, после каждой метки нужно обязательно ставить двоеточие. В строке 4 объявлена метка спецификатора доступа private . Все методы и свойства класса, объявленные после спецификатор доступа private будут доступны только внутри класса. В строке 6 объявлен спецификатор доступа public , все методы и свойства класса, объявленные после спецификатора доступа public будут доступны другим функциям и объектам в программе. Пока на этом остановимся, спецификатор доступа protected разбирать сейчас не будем, просто запомните, что он есть. При объявлении класса, не обязательно объявлять три спецификатора доступа, и не обязательно их объявлять в таком порядке. Но лучше сразу определиться с порядком объявления спецификаторов доступа, и стараться его придерживаться. Разработаем программу, в которой объявим простейший класс, в котором будет объявлена одна функция, печатающая сообщение.

// classes.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include using namespace std; // начало объявления класса class CppStudio // имя класса < public: // спецификатор доступа void message() // функция (метод класса) выводящая сообщение на экран < cout >; // конец объявления класса CppStudio int main(int argc, char* argv[]) < CppStudio objMessage; // объявление объекта objMessage.message(); // вызов функции класса message system("pause"); return 0; >

В строках 7 — 14 мы определили класс с именем CppStudio. Имя класса принято начинать с большой буквы, последующие слова в имени также должны начинаться с большой буквы. Такое сочетание букв называют верблюжьим регистром, так как чередование больших и маленьких букв напоминает силуэт верблюда. В теле класса объявлен спецификатор доступа public , который позволяет вызывать другим функциям методы класса, объявленные после public . Вот именно поэтому в главной функции, в строке 19 мы смогли вызвать функцию message() . В классе CppStudio объявлена всего одна функция, которая не имеет параметров и выводит сообщение на экран, строка 12. Методы класса — это те же функции, только объявлены они внутри класса, поэтому всё что относится к функциям актуально и для методов классов. Объявление классов выполняется аналогично объявлению функций, то есть класс можно объявлять в отдельном файле или в главном файле, позже посмотрим как это делается. В строке 18 объявлена переменная objMessage типа CppStudio , так вот, переменная objMessage — это объект класса CppStudio . Таким образом, класс является сложным типом данных. После того как объект класса объявлен, можно воспользоваться его методами. Метод всего один — функция message() . Для этого обращаемся к методу объекта objMessage через точку, как показано в строке 19, в результате программа выдаст текстовое сообщение (см. Рисунок 1).

CppStudio.com

website: cppstudio.com theme: Classes and Objects in C + +

Рисунок 1 — Классы в С++

set — функции и get — функции классов

Каждый объект имеет какие-то свои свойства или атрибуты, которые характеризуют его на протяжении всей жизни. Атрибуты объекта хранятся в переменных, объявленных внутри класса, которому принадлежит данный объект. Причём, объявление переменных должно выполняться со спецификатором доступа private . Такие переменные называются элементами данных. Так как элементы данных объявлены в private , то и доступ к ним могут получить только методы класса, внешний доступ к элементам данных запрещён. Поэтому принято объявлять в классах специальные методы — так называемые set и get функции, с помощью которых можно манипулировать элементами данных. set-функции инициализируют элементы данных, get-функции позволяют просмотреть значения элементов данных. Доработаем класс CppStudio так, чтобы в нём можно было хранить дату в формате дд.мм.гг. Для изменения и просмотра даты реализуем соответственно set и get функции.

// classes.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include using namespace std; class CppStudio // имя класса < private: // спецификатор доступа private int day, // день month, // месяц year; // год public: // спецификатор доступа public void message() // функция (метод класса) выводящая сообщение на экран < cout void setDate(int date_day, int date_month, int date_year) // установка даты в формате дд.мм.гг < day = date_day; // инициализация день month = date_month; // инициализация месяц year = date_year; // инициализация год >void getDate() // отобразить текущую дату < cout >; // конец объявления класса CppStudio int main(int argc, char* argv[]) < setlocale(LC_ALL, "rus"); // установка локали int day, month, year; cout > day; cout > month; cout > year; CppStudio objCppstudio; // объявление объекта objCppstudio.message(); // вызов функции класса message objCppstudio.setDate(day, month, year); // инициализация даты objCppstudio.getDate(); // отобразить дату system("pause"); return 0; >

В определении класса появился новый спецификатор доступа private , строка 9. Данный спецификатор доступа ограничивает доступ к переменным, которые объявлены после него и до начала спецификатора доступа public , строки 9 — 12. Таким образом к переменным day, month, year , могут получить доступ только методы класса. Функции не принадлежащие классу, не могут обращаться к этим переменным. Элементы данных или методы класса, объявленные после спецификатора доступа private , но до начала следующего спецификатора доступа называются закрытыми элементами данных и закрытыми методами класса. Следуя принципу наименьших привилегий и принципу хорошего программирования, целесообразно объявлять элементы данных после спецификатора доступа private , а методы класса — после спецификатора доступа public . Тогда, для манипулирования элементами данных, объявляются специальные функции — get и set . В класс CppStudio мы добавили два метода setDate() и getDate() , подробно рассмотрим каждый метод. Метод setDate() определён с 18 по 23 строки. Как уже ранее упоминалось, set — функции инициализируют элементы данных, поэтому метод setDate() выполняет именно такую функцию. То есть метод setDate() инициализирует переменные day, month, year . Чтобы просмотреть, значения в закрытых элементах данных объявлена функция getDate() , которая возвращает значения из переменных day, month, year в виде даты.На этом определение класса закончено, в main(), как и всегда, создаем объект класса, и через объект вызываем его методы,строки 39 — 41. Если бы элементы данных были объявлены после спецификатора public мы бы смогли к ним обратиться точно также, как и к методам класса. Результат работы программы показан на рисунке 2.

CppStudio.com

Введите текущий день месяц и год! день: 10 месяц: 11 год: 2011 website: cppstudio.comntheme: Classes and Objects in C + + Date: 10.11.2011

Рисунок 2 — Классы в С++

Конструкторы

В предыдущей программе, у класса CppStudio были объявлены элементы данных, которые могут хранить информацию о дате. Когда был создан объект класса, мы сначала вызвали set — функцию, для того, чтобы задать текущую дату (тем самым проинициализировать элементы данных), а потом — вызвали get — функцию и увидели соответствующую дату на экране. Если бы мы сначала вызвали get — функцию, то вместо даты мы бы увидели какие-то числа — мусор. Так вот, при создании объектов, можно сразу же проинициализировать элементы данных класса, выполняет эту функцию конструктор. Конструктор — специальная функция, которая выполняет начальную инициализацию элементов данных, причём имя конструктора обязательно должно совпадать с именем класса. Важным отличием конструктора от остальных функций является то, что он не возвращает значений вообще никаких, в том числе и void . В любом классе должен быть конструктор,даже если явным образом конструктор не объявлен (как в предыдущем классе), то компилятор предоставляет конструктор по умолчанию, без параметров. Доработаем класс CppStudio , добавив к нему конструктор.

// classes.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include using namespace std; class CppStudio // имя класса < private: // спецификатор доступа private int day, // день month, // месяц year; // год public: // спецификатор доступа public CppStudio(int date_day, int date_month, int date_year ) // конструктор класса < setDate(date_day, date_month, date_year); // вызов функции установки даты >void message() // функция (метод класса) выводящая сообщение на экран < cout void setDate(int date_day, int date_month, int date_year) // установка даты в формате дд.мм.гг < day = date_day; // инициализация день month = date_month; // инициализация месяц year = date_year; // инициализация год >void getDate() // отобразить текущую дату < cout >; // конец объявления класса CppStudio int main(int argc, char* argv[]) < CppStudio objCppstudio(11,11,2011); // объявление объекта и инициализация элементов данных objCppstudio.message(); // вызов функции message objCppstudio.getDate(); // отобразить дату system("pause"); return 0; >
// classes.cpp: определяет точку входа для консольного приложения. #include using namespace std; class CppStudio // имя класса < private: // спецификатор доступа private int day, // день month, // месяц year; // год public: // спецификатор доступа public CppStudio(int date_day, int date_month, int date_year ) // конструктор класса < setDate(date_day, date_month, date_year); // вызов функции установки даты >void message() // функция (метод класса) выводящая сообщение на экран < cout void setDate(int date_day, int date_month, int date_year) // установка даты в формате дд.мм.гг < day = date_day; // инициализация день month = date_month; // инициализация месяц year = date_year; // инициализация год >void getDate() // отобразить текущую дату < cout >; // конец объявления класса CppStudio int main(int argc, char* argv[]) < CppStudio objCppstudio(11,11,2011); // объявление объекта и инициализация элементов данных objCppstudio.message(); // вызов функции message objCppstudio.getDate(); // отобразить дату return 0; >

Конструктор объявлен в строках 13 — 16. Конструктор имеет три параметра, через которые он получает информацию о дате, в теле конструктора вызывается set — функция для установки даты. Можно было реализовать начальную инициализацию элементов данных класса и без set — функции, но так как эта функция была предусмотрена, то правильнее будет использовать именно эту функцию, строка 15. В строке 35 объявляем объект класса, причём после имени объекта в круглых скобочках передаём три аргумента. Вот так с помощью конструктора выполняется начальная инициализация элементов данных (см. Рисунок 3).

CppStudio.com

website: cppstudio.com theme: Classes and Objects in C + + date: 11.11.2011

Рисунок 3 — Классы в С++

Объявление класса в отдельном файле

До сих пор объявление класса выполнялось в файле с главной функцией и всё работало. Предположим, необходимо написать какую-то программу, для этого необходимо воспользоваться классом CppStudio — разработанный ранее нами класс. Чтобы воспользоваться этим классом, необходимо подключить файл, в котором он объявлен. Как мы уже говорили, подключение файлов выполняется с помощью препроцессорной директивы #include . Но даже, если мы сможем подключить файл с классом, появится новая проблема — так как в файле с классом уже есть функция main() , то при построении проекта компилятор выдаст ошибку. Суть ошибки: «В проекте найдено несколько main() — функций.» Именно поэтому класс необходимо объявлять в отдельном файле, чтобы его можно было неоднократно использовать. Ранее мы объявляли в отдельном файле функции, таким же образом размещается класс в отдельном файле. Для этого необходимо выполнить 3 шага:

  1. добавить в проект заголовочный файл *.h ;
  2. в заголовочном файле объявить пользовательский класс, в нашем случае — CppStudio ;
  3. подключить заголовочный файл к программе, в нашем случае — #include «CppStudio.h» .

?В зависимости от среды разработки, способы добавления файлов в проект могут отличаться, но суть задачи от этого не меняется. В MVS2010 заголовочный файл можно добавить, вызвав контекстное меню(клик правой кнопкой мыши) в «обозревателе решений«, выбрав пункт «создать новый элемент«. В появившемся диалоговом окне выбираем нужный нам тип файла это *.h и заполняем поле «Имя файла«. Как и прежде, имя выбираем осмысленное, как правило такое же как и имя класса. Теперь к нашему проекту добавлен новый заголовочный файл — CppStudio.h .

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

// заголовочный файл CppStudio.h #include using namespace std; // объявление класса class CppStudio // имя класса < private: // спецификатор доступа private int day, // день month, // месяц year; // год public: // спецификатор доступа public CppStudio(int date_day, int date_month, int date_year ) // конструктор класса < setDate(date_day, date_month, date_year); // вызов функции установки даты >void message() // функция (метод класса) выводящая сообщение на экран < cout void setDate(int date_day, int date_month, int date_year) // установка даты в формате дд.мм.гг < day = date_day; // инициализация день month = date_month; // инициализация месяц year = date_year; // инициализация год >void getDate() // отобразить текущую дату < cout >; // конец объявления класса CppStudio

Чтобы главная функция увидела созданный нами класс и смогла его использовать, необходимо включить определение класса в исполняемом файле, с функцией main() . Делается это так:

// classes.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" // подключаем класс CppStudio #include "CppStudio.h" int main(int argc, char*argv[]) < CppStudio objCppstudio(11,11,2011); // объявление объекта и инициализвция элементов данных objCppstudio.message(); // вызов функции message objCppstudio.getDate(); // отобразить дату system("pause"); return 0; >

Что такое классы в объектно-ориентированном программировании

Глубокое погружение в самую сложную и неинтуитивную область программирования.

В этом цикле статей мы говорим об объектно-ориентированном программировании — передовом и очень распространённом подходе к разработке. Это стоит знать всем, кто серьёзно относится к программированию и хочет зарабатывать в этой области.

Если не читали предыдущую статью, вот краткое содержание:

Кратко: что мы уже знаем из прошлой статьи

  • ООП — это подход к программированию. Такой набор практик и принципов, которыми пользуются хорошие разработчики. Противопоставление этому подходу — традиционное процедурное программирование.
  • В процедурном программировании мы пишем функции, которые выполняют какие-то задачи. И при необходимости вызываем одни функции из других. В программе функции живут отдельно, данные — отдельно.
  • Главная проблема процедурного программирования — сложно писать и поддерживать большие проекты. Любой мало-мальски сложный продукт будет требовать сотен функций, которые будут связаны между собой. Получится «спагетти-код».
  • В ООП функции и данные группируются в объекты. Объекты более-менее независимые и общаются друг с другом по строго определённым правилам.
  • Данные в ООП хранятся внутри объектов и называются свойствами объектов. Например, у объекта user может быть свойство name со значением ‘Иван’.
  • Функции в ООП тоже хранятся внутри объектов и называются методами объектов. Например, у объекта user может быть метод sendEmail(), который отправляет этому юзеру письмо.
  • Можно представить, что в ООП взяли «спагетти-код» с тефтелями и разложили из огромного чана порционно по контейнерам. Теперь в каждом контейнере есть спагетти и тефтели, и каждый программист может работать над своим контейнером-объектом, а не ковыряться в общем чане со спагетти.

Одно из преимуществ ООП — не нужно много раз писать один и тот же код. Можно однажды придумать какую-то красивую штуку и потом заново её использовать буквально одной строкой. Для этого и нужны классы.

Что за классы

Вот одно из формальных определений класса: «Класс — это элемент ПО, описывающий абстрактный тип данных и его частичную или полную реализацию»

Если более по-русски, то класс — это шаблон кода, по которому создаётся какой-то объект. Это как рецепт приготовления блюда или инструкция по сборке мебели: сам по себе класс ничего не делает, но с его помощью можно создать новый объект и уже его использовать в работе.

Если пока непонятно, погружайтесь в пример:

Сила примера

Призовём на помощь силу примеров и поговорим про сотовые телефоны.

Допустим, вы делаете мобильники и хотите выпустить на рынок новую модель. Чтобы люди могли сразу пользоваться вашим устройством и быстро к нему привыкли, у телефона должен быть экран, кнопки включения и громкости, камеры спереди и сзади, разъём для зарядки и слот для сим-карты.

Но одного железа недостаточно — нужно соединить его между собой так, чтобы всё работало без сбоёв. Кроме этого, нужно предусмотреть, что происходит при нажатии на кнопки, что выводится на экран и как пользователь будет управлять этим телефоном.

Следующий этап — описать каждую деталь, из которой состоит телефон, каждую микросхему и плату, и объяснить, как детали работают друг с другом. Последний шаг — написать руководство пользователя, где будет полностью рассказано, что можно делать с телефоном, как запустить звонилку или отправить смс.

Мы только что сделали новый класс для телефона — полный набор нужных знаний, описаний, свойств и инструкций, который описывает нашу модель. Все эти инструкции и описания — это ещё не телефон, но из них этот телефон можно сделать.

В программировании у класса есть наборы данных — в нашем случае это комплектующие для телефона. Ещё есть функции для работы с классами, которые называются методами — это то, как пользователь будет работать с нашим телефоном, что он будет на нём делать и каким образом.

Классы на практике

Все примеры дальше мы будем делать на Python, потому что это стильно, модно и молодёжно. А сам Python — очень объектно-ориентированный язык, почти всё в нём — это объекты. Вот и опробуем.

Допустим, мы пишем интернет-магазин с системой скидок. Нам нужно работать с пользователями — постоянными покупателями. Пользователь у нас будет объектом: у него будет имя, возраст и адрес доставки по умолчанию. Мы заведём класс, который поможет нам инициировать нового покупателя.

class User: """Класс для всех покупателей""" user_count = 0 def __init__(name, age, adress): self.name = name self.age = age self.adress = adress user.user_count += 1 

Здесь сказано: «Вот класс для покупателя. У него есть три свойства: имя, возраст и адрес». Теперь мы можем заводить новых покупателей одной строкой:

# Создаём первого покупателя

# Создаём второго покупателя

Что дальше

В следующем материале мы смоделируем реальную ситуацию: добавим программу лояльности, бонусные баллы и расскажем, как Python с этим справится. Чтобы было интереснее, будем писать код на двух языках сразу — Python и JavaScript.

Программирование — это даже не будущее. Это настоящее
Получите профессии настоящего и будущего в Яндекс Практикуме. Это хорошо.

Программирование — это даже не будущее. Это настоящее Программирование — это даже не будущее. Это настоящее Программирование — это даже не будущее. Это настоящее Программирование — это даже не будущее. Это настоящее

Получите ИТ-профессию

В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *