Меню
Разработки
Разработки  /  Информатика  /  Презентации  /  Прочее  /  Базовые понятия ООП

Базовые понятия ООП

Презентация использовалась на занятиях профессионального модуля в ОПК СТИ НИТУ МИСиС

21.12.2017

Содержимое разработки

Тема 5 Основы объектно-ориентированного программирования (ООП )  Лекция 5.1. Базовые понятия ООП  .

Тема 5

Основы объектно-ориентированного программирования (ООП )

Лекция 5.1.

Базовые понятия ООП .

Литература Основная: Павловская Т.А., Щупако Ю.А. C / C ++. Структурное программирование, Питер, 2005. – 402 с.  Дополнительная: Гросс К. С# 2008: Пер. с. анг. – СПб. БХВ-Петербург, 2009. – 576 с. Троелсен Э. Язык программирования С# 2005 и платформа /NET 2.0:пер. с анг. – М:. ООО «И.Д. Вильямс, 2007. – 1168 с.

Литература

Основная:

Павловская Т.А., Щупако Ю.А. C / C ++. Структурное программирование, Питер, 2005. – 402 с.

Дополнительная:

Гросс К. С# 2008: Пер. с. анг. – СПб. БХВ-Петербург, 2009. – 576 с.

Троелсен Э. Язык программирования С# 2005 и платформа /NET 2.0:пер. с анг. – М:. ООО «И.Д. Вильямс, 2007. – 1168 с.

Вопросы : 1. Классы и объекты.  2. Принципы ООП.  3. Пространство имен.  4. Описание класса .

Вопросы :

1. Классы и объекты. 2. Принципы ООП. 3. Пространство имен. 4. Описание класса .

1. Классы и объекты.

1. Классы и объекты.

В ООП основной акцент делается на структуру и взаимодействие данных и процедур их обработки. Объект является своего рода

В ООП основной акцент делается на структуру и взаимодействие данных и процедур их обработки.

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

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

И наоборот, объект может содержать только данные.

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

Тип объекта в ООП называется классом . Класс представляет собой пользовательский тип данных (шаблон), он объединяет разнотипные данные и функции, логически организованные в единое целое.

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

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

Класс обеспечивает некоторую функциональность, например, предоставляет средства создания элемента интерфейса (окна Windows , меню и т.п.) или прикладной обработки.

Жизненный цикл объекта Этап конструирования . При создании экземпляра класса (объекта) он должен инициализироваться. Инициализация называется конструированием, и выполняется функцией-конструктором . Конструктор обеспечивает вычисление количества байтов, необходимых для размещения объекта, и выделение памяти в динамической области. Этап использования. Этап деструкции . При уничтожении объекта выполняются операции по очистке, освобождению памяти. За их выполнение отвечает функция-деструктор .

Жизненный цикл объекта

Этап конструирования . При создании экземпляра класса (объекта) он должен инициализироваться. Инициализация называется конструированием, и выполняется функцией-конструктором . Конструктор обеспечивает вычисление количества байтов, необходимых для размещения объекта, и выделение памяти в динамической области.

Этап использования.

Этап деструкции . При уничтожении объекта выполняются операции по очистке, освобождению памяти. За их выполнение отвечает функция-деструктор .

К основным понятиям ООП относят: принципы ООП – инкапсуляция, наследование, полиморфизм; компоненты класса – поля, свойства, методы, интерфейсы, конструкторы и деструкторы; отношения между объектами ; перегрузку операции ; события .

К основным понятиям ООП относят:

принципы ООП – инкапсуляция, наследование, полиморфизм;

компоненты класса – поля, свойства, методы, интерфейсы, конструкторы и деструкторы;

отношения между объектами ;

перегрузку операции ;

события .

Организация объекта Установка при проектировании Интер-фейс  Поля Свойства Обращения к компонентам объекта Методы Обработчики событий События

Организация объекта

Установка при проектировании

Интер-фейс

Поля

Свойства

Обращения к компонентам объекта

Методы

Обработчики событий

События

2. Принципы ООП

2. Принципы ООП

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

Инкапсуляция - объединение данных и обрабатывающих их методов внутри класса или объекта. Класс содержит описание:

- полей ,

- свойств,

- методов и, возможно, интерфейсов .

Инкапсуляция позволяет скрыть детали реализации объекта от пользователей. Это обеспечивает защиту данных от несанкционированного или неправильного использования.

Значения свойств и полей характеризуют состояние конкретного  объекта . В свойствах и полях разных объектов одного класса могут храниться разные значения. Пусть имеется класс UchDiszip , представляющий учебную дисциплину. При создании экземпляра этого класса (объекта) надо обеспечить конкретное состояние, чтобы он имел какой-то смысл. Тогда каждый конкретный объект типа  UchDiszip будет иметь определенное состояние, например:

Значения свойств и полей характеризуют состояние конкретного объекта . В свойствах и полях разных объектов одного класса могут храниться разные значения. Пусть имеется класс UchDiszip , представляющий учебную дисциплину. При создании экземпляра этого класса (объекта) надо обеспечить конкретное состояние, чтобы он имел какой-то смысл. Тогда каждый конкретный объект типа UchDiszip будет иметь определенное состояние, например: " Алгоритмические языки и программирование, количество учебных часов 160, экзамен ". После этого свойства и поля предоставляют пользователю данного объекта возможность определить наименование дисциплины, отчетность и т.д.

Значения полей устанавливаются путем ввода, данные в них сохраняется в виде значений string , int и т.д. Объекты могут ограждать пользователей от деталей своих данных. Свойства отличаются от полей тем, что они не предоставляют непосредственного доступа к данным. Так, для сохранения информации о количестве часов в поле типа  int экземпляра UchDiszip  пользователи помещают в него желаемые значения и подвергаются лишь тем ограничениям, которые имеются у выбранного типа данных. Например, в случае использования поля типа int пользователи смогут помещать в него любое значение в диапазоне от -2 147 483 648 до 2 147 483 647. Очевидно, не все значения имеют смысл, особенно отрицательные, а большие положительные значения потребуют обучения в течение чрезмерно большого количества лет. В случае применения свойства для сохранения информации значение можно ограничить числами, скажем, от 50 до 200.

Значения полей устанавливаются путем ввода, данные в них сохраняется в виде значений string , int и т.д. Объекты могут ограждать пользователей от деталей своих данных. Свойства отличаются от полей тем, что они не предоставляют непосредственного доступа к данным. Так, для сохранения информации о количестве часов в поле типа int экземпляра UchDiszip пользователи помещают в него желаемые значения и подвергаются лишь тем ограничениям, которые имеются у выбранного типа данных. Например, в случае использования поля типа int пользователи смогут помещать в него любое значение в диапазоне от -2 147 483 648 до 2 147 483 647. Очевидно, не все значения имеют смысл, особенно отрицательные, а большие положительные значения потребуют обучения в течение чрезмерно большого количества лет. В случае применения свойства для сохранения информации значение можно ограничить числами, скажем, от 50 до 200.

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

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

Методы – обеспечивают доступ к функциональным возможностям объекта, т.е. характеризует функциональность объекта. У одного объекта может быть много методов. Методы реализуются в виде функций. Они используют в своих операциях поля и свойства объекта. Объекты могут генерировать и потреблять события ( event ). События обычно являются инициатором выполнения определенных действий. С их помощью создают приложения, управляемые событиями. Так, все приложения для Windows полностью зависят от событий. Каждое действие пользователя (нажатие клавиши, щелчок мыши и т.д.) инициирует событие, которое обрабатываются программно.

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

Объекты могут генерировать и потреблять события ( event ). События обычно являются инициатором выполнения определенных действий. С их помощью создают приложения, управляемые событиями. Так, все приложения для Windows полностью зависят от событий. Каждое действие пользователя (нажатие клавиши, щелчок мыши и т.д.) инициирует событие, которое обрабатываются программно.

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

Наследование – это порождение нового производного класса- потомка от родительского ( базового ) класса . Потомок наследует от предка все его поля, свойства, методы и события. Наследуемые компоненты можно использовать в неизменном виде или переопределять (модифицировать).

Просто наследование обычно смысла не имеет, поэтому в производный класс добавляются новые элементы, определяющие его особенность и функциональность.

Предок у класса всегда один .

От нового класса можно породить следующий класс, в результате образуется дерево классов ( иерархия классов ). В корне дерева находится класс Object , который реализует наиболее общие возможности, например, действия по созданию и удалению объекта. Чем дальше конкретный класс отстоит в дереве от класса Object , тем большей специфичностью он обладает.

Полиморфизм – характеризует способность языка одинаково интерпретировать родственные объекты. Методы могут иметь одинаковые имена, но различное содержание. Это достигается переопределением метода - предка в классе потомке. В результате предок и потомок ведут себя по-разному. При этом обращение к одноименным методам различных объектов выполняется аналогично. Несколько методов могут иметь одинаковые имена, но различаться составом или типом формальных параметров.

Полиморфизм – характеризует способность языка одинаково интерпретировать родственные объекты. Методы могут иметь одинаковые имена, но различное содержание. Это достигается переопределением метода - предка в классе потомке. В результате предок и потомок ведут себя по-разному. При этом обращение к одноименным методам различных объектов выполняется аналогично.

Несколько методов могут иметь одинаковые имена, но различаться составом или типом формальных параметров.

3. Пространство имен

3. Пространство имен

. Код программы записывается в фигурных скобках. Внутри этого пространства обращение к имени осуществляется обычным образом. Вне этого пространства для обращения к «внутреннему» имени оно должно квалифицироваться . Квалифицированное имя содержит наименование пространства имен и через точку имя объекта. Пространства имен можно вкладывать друг в друга. " width="640"

Код программы содержится в так называемом глобальном пространстве имен . Доступ к именам этого пространства имеют все объекты, находящиеся в этом же пространстве.

Программист может создавать свои пространства имен, используя ключевое слово namespace имя пространства . Код программы записывается в фигурных скобках. Внутри этого пространства обращение к имени осуществляется обычным образом. Вне этого пространства для обращения к «внутреннему» имени оно должно квалифицироваться . Квалифицированное имя содержит наименование пространства имен и через точку имя объекта. Пространства имен можно вкладывать друг в друга.

Примеры: а) namespace lev  //объявлено пространство имен lev  {  int var 1; //объявлена переменная var 1 в     //пространстве имен lev  … //фрагмент программы для пространства имен lev  var 1= var 1+1;  } //Для обращения к переменной var 1 вне этого пространства //указывают квалифицированное имя lev . var 1=0;

Примеры:

а)

namespace lev //объявлено пространство имен lev

{

int var 1; //объявлена переменная var 1 в //пространстве имен lev

//фрагмент программы для пространства имен lev

var 1= var 1+1;

}

//Для обращения к переменной var 1 вне этого пространства

//указывают квалифицированное имя

lev . var 1=0;

б) вложенные пространства имен namespace lev 1 //объявлено пространство имен lev 1  {  int var 1; //объявлена переменная var 1 в пространстве имен lev 1 … //фрагмент программы пространства имен lev 1  var 1= var 1+1; //обращение к переменной из пространства имен lev 1    namespace lev 2 //объявлено пространство имен lev 2  {  int var1, var2; …  var2=var1*3;  }  lev2.var1=1; //обращение к переменной из пространства имен lev2  } … lev1.lev2.var1=7;

б) вложенные пространства имен

namespace lev 1 //объявлено пространство имен lev 1

{

int var 1; //объявлена переменная var 1 в пространстве имен lev 1

//фрагмент программы пространства имен lev 1

var 1= var 1+1; //обращение к переменной из пространства имен lev 1

 

namespace lev 2 //объявлено пространство имен lev 2

{

int var1, var2;

var2=var1*3;

}

lev2.var1=1; //обращение к переменной из пространства имен lev2

}

lev1.lev2.var1=7;

Для упрощения обращения к переменным можно использовать оператор using , например, используя оператор using lev 2; можно в пространстве имен lev 1 обращаться к переменной var 2 . Но для исключения неоднозначности с переменной var 1 для пространства имен lev 1 и выше необходимо указывать квалификационное имя. В начале текста программы операторы using System; using System.Collections.Generic; using System.Text; подключают стандартные пространства имен базовых средств, необходимых для работы программы, например Console, Convert .

Для упрощения обращения к переменным можно использовать оператор using , например, используя оператор using lev 2; можно в пространстве имен lev 1 обращаться к переменной var 2 . Но для исключения неоднозначности с переменной var 1 для пространства имен lev 1 и выше необходимо указывать квалификационное имя.

В начале текста программы операторы

using System;

using System.Collections.Generic;

using System.Text;

подключают стандартные пространства имен базовых средств, необходимых для работы программы, например Console, Convert .

4. Описание класса

4. Описание класса

Для характеристики уровней доступности классов, объектов, полей, свойств используют понятие тип доступа и доступность: - тип доступа поля или свойства . Характеризует возможность чтения или записи. Некоторые поля и свойства доступны только для чтения, т.е. позволяют осуществлять просмотр значений, но не вносить изменения, по крайней мере напрямую. Другие поля и свойства доступны только для записи и не позволяют просматривать содержимое свойства. Третий вид полей и свойств доступен для чтения и для записи; - доступность . Задает права доступа. Доступность определяет какой код может получить доступ к данным свойствам.

Для характеристики уровней доступности классов, объектов, полей, свойств используют понятие тип доступа и доступность:

- тип доступа поля или свойства . Характеризует возможность чтения или записи. Некоторые поля и свойства доступны только для чтения, т.е. позволяют осуществлять просмотр значений, но не вносить изменения, по крайней мере напрямую. Другие поля и свойства доступны только для записи и не позволяют просматривать содержимое свойства. Третий вид полей и свойств доступен для чтения и для записи;

- доступность . Задает права доступа. Доступность определяет какой код может получить доступ к данным свойствам.

Виды доступности: - общая ( public ). Свойства доступны для всего кода программ; - закрытая ( private ). Свойства доступны только для кода внутри класса и недоступны в объектах – потомках и в коде программы вне класса. Используется по умолчанию, если не указан конкретный вид; - защищенная ( protected ). Свойства доступны для кода внутри класса и его потомков. Вне класса и его потомков свойства недоступны; - внутренняя ( internal ). Свойства доступны для кода проекта, внутри которого они определены. Методы и поля имеют такие же виды доступности.

Виды доступности:

- общая ( public ). Свойства доступны для всего кода программ;

- закрытая ( private ). Свойства доступны только для кода внутри класса и недоступны в объектах – потомках и в коде программы вне класса. Используется по умолчанию, если не указан конкретный вид;

- защищенная ( protected ). Свойства доступны для кода внутри класса и его потомков. Вне класса и его потомков свойства недоступны;

- внутренняя ( internal ). Свойства доступны для кода проекта, внутри которого они определены.

Методы и поля имеют такие же виды доступности.

5 || value else { sum += value ; KolOz++; } } } //конец описания свойства SrBall } //конец описания класса ClassKursant " width="640"

namespace т05.01 //Пример описания класса

{

class Program

{

class ClassKursant //класс для подсчета среднего балла

{

public string Name; //фамилия курсанта

private float sum = 0.0f; //сумма оценок

private int KolOz = 0; //количество оценок

public float SrBall //средний балл

{

get

{

return sum / KolOz;

}

set

{

if ( value 5 || value else { sum += value ; KolOz++; }

}

} //конец описания свойства SrBall

} //конец описания класса ClassKursant

 static void Main( string [  ] args)   {  ClassKursant kursant = new ClassKursant ();    kursant.Name =

static void Main( string [ ] args)

{

ClassKursant kursant = new ClassKursant ();

kursant.Name = "Сидоров";

for (i = 0; i

Console.WriteLine("Курсант {0}", kursant.Name);

Console .WriteLine("Средняя величина={0} srball={1}", Math .Sqrt(kursant.SrBall), kursant.SrBall);

.

Вопросы для самоподготовки Понятие и состав класса. Соотношение понятий класса и объекта. Понятия наследования, инкапсуляции, полиморфизма. Изучить постановку задачи на практическое занятие.

Вопросы для самоподготовки

  • Понятие и состав класса.
  • Соотношение понятий класса и объекта.
  • Понятия наследования, инкапсуляции, полиморфизма.
  • Изучить постановку задачи на практическое занятие.
Разработ ка простой объектно-ориентированной программы Разработать программу, содержащую описание простого класса, предназначенного для хранения и обработки результатов измерений хi , i =1, 2, …, n . Класс должен принимать положительные значения измерений, накапливать их сумму и количество. По обращению к заданному разработчиком свойству класс должен выдавать среднее значение измерений. Программа должна обеспечивать: 1. Создание экземпляра класса (объекта); 2. Вывод подсказки по взаимодействию программы с пользователем. 3. Ввод положительных значений результатов измерений; 4. Обращение к объекту для накопления измерений; 5. Пункты 3 и 4 повторяются до тех пор, пока пользователь не введет нулевое значение измерений; 6. Обращение к объекту для получения среднего значения результатов измерений и отображение результата усреднения.
  • Разработ ка простой объектно-ориентированной программы
  • Разработать программу, содержащую описание простого класса, предназначенного для хранения и обработки результатов измерений хi , i =1, 2, …, n . Класс должен принимать положительные значения измерений, накапливать их сумму и количество. По обращению к заданному разработчиком свойству класс должен выдавать среднее значение измерений.
  • Программа должна обеспечивать:
  • 1. Создание экземпляра класса (объекта);
  • 2. Вывод подсказки по взаимодействию программы с пользователем.
  • 3. Ввод положительных значений результатов измерений;
  • 4. Обращение к объекту для накопления измерений;
  • 5. Пункты 3 и 4 повторяются до тех пор, пока пользователь не введет нулевое значение измерений;
  • 6. Обращение к объекту для получения среднего значения результатов измерений и отображение результата усреднения.
-80%
Курсы дополнительного образования

Создание динамических веб-страниц с помощью PHP и MySQL

Продолжительность 72 часа
Документ: Cвидетельство о прохождении курса
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Базовые понятия ООП (223.5 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт

Вы смотрели

Пользовательское соглашение Политика обработки персональных данных Политика использования файлов cookie
Учителю!
Огромная база учебных материалов на каждый урок с возможностью удаленного управления
Тесты, видеоуроки, электронные тетради