78 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Object Oriented Programming using C++ | |||
|  | localeTitle: Объектно-ориентированное программирование с использованием C ++ | |||
|  | --- | |||
|  | ## Объектно-ориентированное программирование с использованием C ++
 | |||
|  | 
 | |||
|  | Объектно-ориентированное программирование, короткое ООП, предназначено для реализации объектов реального мира, таких как наследование, скрытие и полиморфизм в программировании. Основная цель ООП заключается в объединении данных и функций, которые работают на них, чтобы никакая другая часть кода не могла получить доступ к этим данным, кроме этой функции. | |||
|  | 
 | |||
|  | Давайте узнаем о разных характеристиках объектно-ориентированного языка программирования: | |||
|  | 
 | |||
|  | ### Объект:
 | |||
|  | 
 | |||
|  | Объекты - это базовые объекты времени выполнения в объектно-ориентированной системе, объекты - это экземпляры класса, это определенные пользователем типы данных. | |||
|  | 
 | |||
|  | ```cpp | |||
|  | class person  | |||
|  |  {  | |||
|  |     char name[20];  | |||
|  |     int id;  | |||
|  |  public:  | |||
|  |     void getdetails(){}  | |||
|  |  };  | |||
|  |   | |||
|  |  int main()  | |||
|  |  {  | |||
|  |    person p1; //p1 is an object  | |||
|  |  }  | |||
|  | ``` | |||
|  | 
 | |||
|  | Объекты занимают пространство в памяти и имеют ассоциированный адрес, такой как запись в паскале или структура или объединение в C. | |||
|  | 
 | |||
|  | Когда программа выполняется, объекты взаимодействуют, отправляя сообщения друг другу. | |||
|  | 
 | |||
|  | Каждый объект содержит данные и код для управления данными. Объекты могут взаимодействовать, не зная деталей данных или кода друг друга. Достаточно знать тип принятого сообщения и тип ответа, возвращаемого объектами. | |||
|  | 
 | |||
|  | ### Учебный класс:
 | |||
|  | 
 | |||
|  | Класс - это план данных и функций или методов. Класс не занимает никакого места. | |||
|  | 
 | |||
|  | ```cpp | |||
|  | class class_name  | |||
|  |  {  | |||
|  |   private:  | |||
|  |      //data members and member functions declarations  | |||
|  |   public:  | |||
|  |      //data members and member functions declarations  | |||
|  |   protected:  | |||
|  |      //data members and member functions declarations  | |||
|  |  };  | |||
|  | ``` | |||
|  | 
 | |||
|  | Класс - это определенный пользователем тип данных, такой как структуры и объединения в C. | |||
|  | 
 | |||
|  | По умолчанию переменные класса являются частными, но в случае структуры они общедоступны. в приведенном выше примере человек - это класс. | |||
|  | 
 | |||
|  | ### Инкапсуляция и абстракция данных:
 | |||
|  | 
 | |||
|  | Объединение (объединение) данных и функций в единый блок называется инкапсуляцией. Данные не доступны для внешнего мира, и к ним могут обращаться только те функции, которые обертываются в классе. Эта изоляция данных от прямого доступа к программе называется скрытием данных или скрытием информации. | |||
|  | 
 | |||
|  | Абстракция данных означает предоставление только необходимой информации внешнему миру и скрытие деталей реализации. Например, рассмотрим класс Complex с публичными функциями как getReal () и getImag (). Мы можем реализовать класс как массив размером 2 или как две переменные. Преимущество абстракций заключается в том, что мы можем изменить реализацию в любой момент, пользователи класса Complex не будут затронуты, так как наш интерфейс метода остается таким же. Если бы наша реализация была публичной, мы бы не смогли ее изменить. | |||
|  | 
 | |||
|  | ### Наследование:
 | |||
|  | 
 | |||
|  | Наследование - это процесс, посредством которого объекты одного класса приобретают свойства объектов другого класса. Он поддерживает концепцию иерархической классификации. Наследование обеспечивает повторное использование. Это означает, что мы можем добавить дополнительные функции к существующему классу, не изменяя его. | |||
|  | 
 | |||
|  | ### Полиморфизм:
 | |||
|  | 
 | |||
|  | Полиморфизм означает способность принимать более одной формы. В разных случаях операция может демонстрировать разные типы поведения. Поведение зависит от типов данных, используемых в операции. | |||
|  | 
 | |||
|  | C ++ поддерживает перегрузку и перегрузку функций. Перегрузка оператора - это процесс, при котором оператор может проявлять разные типы поведения в разных случаях. Перегрузка функций использует одно имя функции для выполнения различных задач. Полиморфизм широко используется при реализации наследования. | |||
|  | 
 | |||
|  | ### Динамическое связывание:
 | |||
|  | 
 | |||
|  | В динамическом связывании код, который будет выполняться в ответ на вызов функции, определяется во время выполнения. У C ++ есть виртуальные функции для поддержки этого. | |||
|  | 
 | |||
|  | ### Сообщение:
 | |||
|  | 
 | |||
|  | Объекты обмениваются данными друг с другом, отправляя и получая информацию друг другу. Сообщение для объекта - это запрос на выполнение процедуры и, следовательно, вызовет функцию в принимающем объекте, которая генерирует желаемые результаты. Передача сообщения включает указание имени объекта, имени функции и информации для отправки. |