Рабочая программа по объектно ориентированному программированию: Рабочая программа дисциплины «Объектно-ориентированное программирование» по направлению подготовки 09.03.02 «Информационные с…

Содержание

Рабочая программа «Объектно-ориентированное программирование»

ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ПРОФЕССИОНАЛЬНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ИРКУТСКОЙ ОБЛАСТИ

«ЧЕРЕМХОВСКИЙ ГОРНОТЕХНИЧЕСКИЙ КОЛЛЕДЖ ИМ. М.И. ЩАДОВА»

(ЧГТК им. М.И. ЩАДОВА)

УТВЕРЖДАЮ

Директор колледжа

__________С.Н.Сычев

___________2016 год

РАБОЧАЯ ПРОГРАММА

УЧЕБНОЙ ДИСЦИПЛИНЫ

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

Профессионального цикла программы подготовки

специалистов среднего звена

09.02.04 Информационные системы (по отраслям)

Черемхово, 2016

РАССМОТРЕНА

Цикловой комиссией

Информатики и ВТ

Председатель

_______________ Е. А.Литвинцева

«_____» _____________ 2016 г.

ОДОБРЕНА

Методическим советом колледжа

Протокол №____

От «____» __________ 2016 г.

Председатель МС

________________ Е.К.Ващук

Рабочая программа учебной дисциплины Объектно-ориентированное программирование на основе примерной программы учебной дисциплины Объектно-ориентированное программирование, рекомендованной ФГУ «ФИРО». Заключение экспертного совета №__ от ____ 20___ года. Автор примерной программы:

Рабочая программа предназначение для специальности среднего профессионального образования: 09.02.04 Информационные системы (по отраслям)

Разработчик: Коровина Надежда Сергеевна – преподаватель специальных дисциплин ГБПОУ ИО «ЧГТК им. М.И. Щадова»

СОДЕРЖАНИЕ

стр.

4

7

11

13

14

16

1. паспорт РАБОЧЕЙ ПРОГРАММЫ УЧЕБНОЙ ДИСЦИПЛИНЫ

Объектно-ориентированное программирование

1.1. Область применения примерной программы

Рабочая программа учебной дисциплины является частью примерной основной профессиональной образовательной программы в соответствии с ФГОС по специальности 09.02.04 Информационные системы (по отраслям) (базовая подготовка), входящей в укрупненную группу специальностей 09.00.00 Информатика и вычислительная техника.

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

1.2. Место учебной дисциплины в структуре основной профессиональной образовательной программы.

Учебная дисциплина объектно-ориентированное программирование дисциплина входит в профессиональный цикл.

1.3. Цели и задачи учебной дисциплины – требования к результатам освоения учебной дисциплины:

Базовая часть не предусмотрена

Вариативная часть

В результате освоения учебной дисциплины обучающийся должен уметь:

  • использовать языки программирования;

  • строить логически правильные и эффективные программы;

  • применять процедуры;

  • использовать нисходящий метод для решения задач.

  • работать в интегрированной среде программирования «Delphi 7».

В результате освоения учебной дисциплины обучающийся должен

знать:

  • общие принципы построения алгоритмов, основные алгоритмические конструкции;

  • понятие системы программирования;

  • основные элементы процедурного языка программирования, структуру программы, операторы и операции, управляющие структуры, структуры данных, файлы, классы памяти;

  • подпрограммы, составление библиотек программ;

  • объектно-ориентированную модель программирования, понятие классов и объектов, их свойств и методов.

Содержание дисциплины ориентировано на подготовку студентов к освоению профессиональных ОПОП по специальности 09.02.04 Информационные системы (по отраслям) и овладению профессиональных компетенции:

Код

Наименование результата обучения

ПК 1.2

Взаимодействовать со специалистами смежного профиля при разработке методов, средств и технологий применения объектов профессиональной деятельности.

ПК 1.3

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

ПК 2.2

Программировать в соответствии с требованиями технического задания.

ПК 2.3

Применять методики тестирования разрабатываемых приложений

В процессе освоения дисциплины студент должен овладеть общими компетенциями:

Код

Наименование результата обучения

ОК 1.

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

ОК 2.

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

ОК 3.

Принимать решения в стандартных и нестандартных ситуациях и нести за них ответственность.

ОК 4.

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

ОК 5.

Использовать информационно-коммуникационные технологии в профессиональной деятельности.

ОК 6.

Работать в коллективе и команде, эффективно общаться с коллегами, руководством, потребителями.

ОК 7.

Брать на себя ответственность за работу членов команды (подчиненных), результат выполнения заданий.

ОК 8.

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

ОК 9.

Ориентироваться в условиях частой смены технологий в профессиональной деятельности.

1.4. Рекомендуемое количество часов на освоение примерной программы учебной дисциплины:

максимальной учебной нагрузки обучающегося 180 часов,

в том числе:

обязательной аудиторной учебной нагрузки обучающегося 121 часа;

самостоятельной работы обучающегося 59 часа.

2. СТРУКТУРА И СОДЕРЖАНИЕ УЧЕБНОЙ ДИСЦИПЛИНЫ

2.1. Объем учебной дисциплины и виды учебной работы

занятия

Содержание учебного материала, лабораторные работы и практические занятия,

самостоятельная работа обучающихся

Объем часов

Уровень освоения

1

2

3

4

5

Раздел 1 Основные принципы алгоритмизации и программирования

Тема 1. 1.Алгоритмы и программы

Содержание учебного материала

1

1

Понятие алгоритма. Свойства и формы записи алгоритма.

2

2

2

Общие принципы построения алгоритмов. Основные алгоритмические конструкции.

2

3

2

Понятие программы. Программирование и его виды

2

Самостоятельная работа обучающихся № 1

Решение задач и составление алгоритмов к ним

9

Тема1. 2. Языки и методы программирования

Содержание учебного материала

4

1

Языки программирования. Эволюция языков программирования. Классификация языков программирования..

2

2

5

2

Методы программирования: структурный, модульный, объектно-ориентированный. Достоинства и недостатки методов программирования.

2

Самостоятельная работа обучающихся № 2

Подготовка реферата на темы «Общие принципы разработки программного обеспечения. Типы приложений. Консольные приложения. Этапы разработки программ для структурного подхода и объектно-ориентированного подхода»

5

Тема 1.3. Основные принципы объектно-ориентированного программирования

6

1

История развития ООП. Базовые понятия: объект, его свойства и методы, класс, интерфейс.

2

2

7

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

2

Самостоятельная работа обучающихся № 3

Подготовка реферата на темы: «История развития ООП. Событийно-управляемая модель программирования. Компонентно-ориентированный подход. Классы объектов. Компоненты и их свойства.»

5

Тема 1.4. Разработка программного обеспечения

7

1

Общие принципы разработки программного обеспечения.

2

2

8

2

Жизненный цикл программного обеспечения.

2

Самостоятельная работа обучающихся № 4

Подготовка конспекта — схемы «Сложность разработки ПО. Участники процесса разработки ПО. Проблемы разработки ПО»

5

Раздел 2 Интегрированная среда разработки Delphi

Тема 2.1. Интерфейс интегрированной среды разработчики (Borland Delphi 7).

Содержание учебного материала

9

1

Интерфейс среды разработчика: характеристика, основные окна, инструменты, объекты

2

2

10

2

Состав и характеристика проекта. Выполнение проекта. Настройка среды и параметров проекта. Окно кода проекта.

2

11

3

Библиотека визуальных компонентов VCL и ее базовые классы.

2

12

4

Форма и размещение на ней управляющих элементов. Свойства формы, методы и события

2

13

Практические занятия № 1

Запуск Borland Delphi 7. Изучение интерфейса программы.

2

14

Практические занятия № 2

Создание простого проекта. Отладка проекта.

2

15

Практические занятия № 3

Проектирование и формирование формы

Самостоятельная работа обучающихся № 5

Подготовить реферат на тему: «Требования к аппаратным и программным средствам интегрированной среды разработчика.»

5

Тема 2.2 Программирование на одном из процедурных языков (Borland Delphi 7)

Содержание учебного материала

2

16

1

Основные элементы языка. Лексика языка.

2

17

Структурная схема программы на алгоритмическом языке.

2

18

2

Переменные и константы. Типы данных.

2

19

Выражения и операции.

2

20

Практические занятия № 4

Описание переменных.

2

21

Практические занятия № 5

Описание констант

2

Самостоятельная работа обучающихся № 6

Подготовка к лабораторным и практическим работам. Оформление отчетов и подготовка к защите.

5

Тема 2.3. Визуальное событийно-управляемое программирование

Содержание учебного материала

2

22

1

Основные компоненты (элементы управления) интегрированной среды разработки, их состав и назначение.

2

23

2

Надпись, текстовое поле , кнопка.

2

24

3

Переключатели, флажки, полосы прокрутки, списки

2

25

4

Таймер, рисунок, фигура.

2

26

5

Вспомогательные компоненты System, Additional, Win32

2

27

Практические занятия № 6

Создание проекта с использованием компонентов стандартных диалогов.

2

28

Практические занятия № 7

Создание проекта с использованием компонентов стандартных диалогов.

2

29

Практические занятия № 8

Создание проекта с использованием компонентов системы меню.

2

30

Практические занятия № 9

Создание проекта с использованием компонентов системы меню

2

Самостоятельная работа обучающихся № 7

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

5

Тема 2. 4 Обработка исключительных ситуации

Содержание учебного материала

2

31

1

Виды ошибок. Синтаксические, логические и динамические ошибки.

2

32

Выбор обрабоки исключений. глобальная и локальная обработка исключений

2

33

Конструкции try…finally и try…except. Анализ обработки исключений.

2

34

Практические занятия № 10

Обработка исключительных ситуации .

2

Самостоятельная работа обучающихся № 8

Подготовка реферата на темы «Компиляция, средства отладки на этапе компиляции. Средства отладки на этапе отладки. Виды обработки ошибок на этапе выполнения.»

5

Тема 2.5 Графические средства Delphi

Содержание учебного материала

35

1

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

2

2

36

2

Средства прорисовки контурного изображения на Canvas формы, синхронизировать события, сопровождающие обновление окна.

2

37

3

Метод Execute, функции. Trunc и Round, Int и Frac, Power и IntPower, элемент ColorDialog.

2

38

Понятие текущего указателя и метод HoveTo, методы CopyRect и Draw.

2

39

Практические занятия № 11

Графические примитивы контурной графики.

2

40

Практические занятия № 12

Графические примитивы контурной графики.

2

41

Практические занятия № 13

Графические примитивы контурной графики.

2

Самостоятельная работа обучающихся № 9

Подготовка реферата на темы «Средства прорисовки контурного изображения на Canvas формы, синхронизировать события, сопровождающие обновление окна..»

5

Тема 2.6. Процедуры и функции. Работа с файлами

Содержание учебного материала

42

1

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

2

2

43

2

Программирование рекурсивных алгоритмов. Вызов функций, рекурсия

2

44

3

Типы файлов. Организация доступа к файлам. Файлы произвольного доступа.

2

45

Практические занятия № 14

Организация и использование процедур.

2

46

Практические занятия № 15

Работа с файлом последовательного и произвольного доступа

2

Тема 2.7. Библиотеки подпрограмм. Иерархия классов

Содержание учебного материала

2

47

1

Программирование модулей. Модуль: синтаксис, заголовок, разделы.

2

48

Схема вызова библиотек. Статическое и динамическое связывание. Использование библиотек подпрограмм

2

49

2

Классы объектно-ориентированного языка программирования: виды, назначение, свойства, методы, события.

2

50

Объявление класса, свойств и методов экземпляра класса. Наследование. Перегрузка методов

2

51

Практические занятия № 16

Программирование модуля.

2

52

Практические занятия № 17

Создание экземпляров класса . Объявление класса.

2

53

Практические занятия № 18

Создание наследованного класса. Перегрузка методов.

2

Самостоятельная работа обучающихся № 10

Подготовка реферата на темы «Библиотеки подпрограмм: понятие и виды. Схема вызова библиотек. Статическое и динамическое связывание. Использование библиотек подпрограмм.»

5

Тема 2.8. Этапы разработки приложения.

Содержание учебного материала:

1

54

1

Проектирование объектно-ориентированного приложения.

2

55

Создание интерфейса пользователя. Программирование приложения.

2

56

Многооконные приложения. Управления формами.

2

57

Создание документации. Тестирование, отладка приложения.

2

58

Практические занятия № 19

Разработка оконного приложения.

2

59

Практические занятия № 20

Разработка оконного приложения с несколькими формами.

2

60

Практические занятия № 21

Разработка оконного приложения с несколькими формами.

2

61

Практические занятия № 22

Разработка многооконного приложения.

2

Самостоятельная работа обучающихся № 11

Подготовка реферата на темы «Разработка функционального интерфейса приложения. Создание интерфейса приложения. Разработка функциональной схемы работы приложения. Создание процедур обработки событий. Компиляция и запуск приложения.»

5

Всего:

180

3.1. Требования к минимальному материально-техническому обеспечению

Реализация учебной дисциплины требует наличия учебного кабинета программирования и баз данных; лаборатории инструментальных средств разработки.

Оборудование учебного кабинета: посадочные места по количеству обучающихся, рабочее место преподавателя, комплект учебно-методической документации.

Технические средства обучения: ноутбук, экран, мультимедийный проектор, доска.

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

Перечень рекомендуемых учебных изданий, Интернет-ресурсов, дополнительной литературы

Для преподавателя:

Основные источники:

О–1 Семакин И.Г., Шестаков А.П. Основы алгоритмизации и программирования: учебник для сред. проф. образования. – М.:Издательский центр «Академия», 2010.

О–2 Фаронов В.В.Delphi программирование на языке высокого уровня. -Спб., М: Питер, 2007 – 640 с.

Дополнительные источники:

Д – 1Страуструп Б. Язык программирования Turbo Pascal (третье издание). – Спб., М.: «Невский диалект. Издательство «Бином», 2010.

Д – 2 Эпштейн М.С. Практикум по программированию: учебн. пособие для сред. проф. образования. – М.:Издательский центр «Академия», 2009.

Д – 3 Лесневский А.С. Объектно-ориентированное программирование для начинающих. – М.: Бином. Лаборатория знаний, 2009.

Д – 4 Абрамян М. Э. 1000 задач по программированию, часть : методическое пособие – М: «Ростов-на-Дону», 2004.

Для студентов:

Основные источники:

О–1 Семакин И.Г., Шестаков А.П. Основы алгоритмизации и программирования: учебник для сред. проф. образования. – М.:Издательский центр «Академия», 2010.

Дополнительные источники:

Д – 1Страуструп Б. Язык программирования Turbo Pascal (третье издание). – Спб., М.: «Невский диалект. Издательство «Бином», 2010.

Д – 2 Эпштейн М.С. Практикум по программированию: учебн. пособие для сред. проф. образования. – М.:Издательский центр «Академия», 2009.

Д – 3 Лесневский А.С. Объектно-ориентированное программирование для начинающих. – М.: Бином. Лаборатория знаний, 2009.

Д – 4 Абрамян М. Э. 1000 задач по программированию, часть : методическое пособие – М: «Ростов-на-Дону», 2004.

Интернет-ресурсы:

1. Начало программирования: Форма доступа: http:www.pas1. ru

Результаты обучения

(освоенные умения, усвоенные знания)

Формы и методы контроля и оценки результатов обучения

В результате освоения учебной дисциплины обучающийся должен уметь:

использовать языки программирования

Наблюдение за выполнением практической работы

строить логически правильные и эффективные программы

Наблюдение за выполнением практической работы

В результате освоения учебной дисциплины обучающийся должен знать:

общие принципы построения алгоритмов, основные алгоритмические конструкции;

Наблюдение, оценка выполнения задания.

понятие системы программирования;

Наблюдение, оценка выполнения задания.

основные элементы процедурного языка программирования, структуру программы, операторы и операции, управляющие структуры, структуры данных, файлы, классы памяти;

Наблюдение, оценка выполнения задания.

подпрограммы, составление библиотек программ;

Наблюдение, оценка выполнения задания.

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

Наблюдение, оценка выполнения задания.

ПРОГРАММЫ

ТЕМА

ТЕМАТИКА САМОСТОЯТЕЛЬНОЙ РАБОТЫ

КОЛ-ВО

ЧАСОВ

Раздел 1 Основные принципы алгоритмизации и программирования Тема 1. 1.Алгоритмы и программы

Самостоятельная работа обучающихся № 1

Решение задач на составление алгоритмов.

9 часов

Тема1. 2. Языки и методы программирования

Самостоятельная работа обучающихся № 2

Подготовка реферата на темы «Общие принципы разработки программного обеспечения. Типы приложений. Консольные приложения. Этапы разработки программ для структурного подхода и объектно-ориентированного подхода»

5 часов

Тема 1.3. Основные принципы объектно-ориентированного программирования

Самостоятельная работа обучающихся № 3

Подготовка реферата на темы: «История развития ООП. Событийно-управляемая модель программирования. Компонентно-ориентированный подход. Классы объектов. Компоненты и их свойства.»

5 часов

Тема 1.4. Разработка программного обеспечения

Самостоятельная работа обучающихся № 4

Подготовка конспекта — схемы «Сложность разработки ПО. Участники процесса разработки ПО. Проблемы разработки ПО»

5 часов

Раздел 2 Интегрированная среда разработки Delphi

Тема 2.1. Интерфейс интегрированной среды разработчики (Borland Delphi 7).

Самостоятельная работа обучающихся № 5

Подготовить реферат на тему: «Требования к аппаратным и программным средствам интегрированной среды разработчика. »

5 часов

Тема 2.2 Программирование на одном из процедурных языков (Borland Delphi 7)

Самостоятельная работа обучающихся № 6

Подготовка к лабораторным и практическим работам. Оформление отчетов и подготовка к защите.

5 часов

Тема 2.3. Визуальное событийно-управляемое программирование

Самостоятельная работа обучающихся № 7

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

5 часов

Тема 2. 4 Обработка исключительных ситуации

Самостоятельная работа обучающихся № 8

Подготовка реферата на темы «Компиляция, средства отладки на этапе компиляции. Средства отладки на этапе отладки. Виды обработки ошибок на этапе выполнения.»

5 часов

Тема 2.5 Графические средства Delphi

Самостоятельная работа обучающихся № 9

Подготовка реферата на темы «Средства прорисовки контурного изображения на Canvas формы, синхронизировать события, сопровождающие обновление окна.

5 часов

Тема 2.7. Библиотеки подпрограмм. Иерархия классов

Самостоятельная работа обучающихся № 10

Подготовка реферата на темы «Библиотеки подпрограмм: понятие и виды. Схема вызова библиотек. Статическое и динамическое связывание. Использование библиотек подпрограмм.»

5 часов

Тема 2.8. Этапы разработки приложения.

Самостоятельная работа обучающихся № 11

Подготовка реферата на темы «Разработка функционального интерфейса приложения. Создание интерфейса приложения. Разработка функциональной схемы работы приложения. Создание процедур обработки событий. Компиляция и запуск приложения.»

5 часов

итого

59 часов

6.ЛИСТ ИЗМЕНЕНИЙ И ДОПОЛНЕНИЙ, ВНЕСЕННЫХ В РАБОЧУЮ ПРОГРАММУ

изменения, дата внесения, № страницы с изменением

Было

Стало

Основание:

Подпись лица, внесшего изменения

РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ Объектно-ориентированное программирование

1.

ЦЕЛИ ОСВОЕНИЯ ДИСЦИПЛИНЫ

1. ЦЕЛИ ОСВОЕНИЯ ДИСЦИПЛИНЫ Дисциплина «Архитектура информационных систем» относится к числу дисциплин профессионального цикла направления 09.03.02 «Информационные системы и технологии». Цель данной дисциплины

Подробнее

1. Цели освоения дисциплины

1. Цели освоения дисциплины Дисциплина «Микропроцессорные контроллеры» направлена на формирование навыков выбора, конфигурирования микропроцессорных контроллеров, подбора модулей контроллеров в соответствии

Подробнее

Объектно-ориентированное программирование

Министерство образования и науки Российской Федерации Государственное образовательное учреждение высшего профессионального образования «Славянский-на-Кубани государственный педагогический институт» Утверждаю

Подробнее

ПРОИЗВОДСТВО СВАРНЫХ КОНСТРУКЦИЙ

УТВЕРЖДАЮ Директор ИНК В. Н. Бориков «Л» о G 2015 г. БАЗОВАЯ РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ ПРОИЗВОДСТВО СВАРНЫХ КОНСТРУКЦИЙ Направление О О П 15.03.01 Машиностроение Профиль подготовки (специализация, программа)

Подробнее

1. Цели и задачи дисциплины

1. Цели и задачи дисциплины Основной целью дисциплины «Методы принятия управленческих решений» является формирование у бакалавров теоретической базы по современным методам и способам принятия управленческих

Подробнее

Прикладная информатика

Министерство образования и науки Российской Федерации Славянский-на-Кубани государственный педагогический институт Утверждаю и.о. ректора Яценко А.И. » » 011 г. РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (курс по выбору)

Подробнее

1. Цели освоения модуля (дисциплины)

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

Подробнее

ИДЗ

Государственное образовательное учреждение высшего профессионального образования «Липецкий государственный технический университет» «УТВЕРЖДАЮ» Декан ФАИ / П. В. Сараев / РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ)

Подробнее

1. Цели освоения дисциплины

1. Цели освоения дисциплины Цель изучения дисциплины «Теория автоматического управления и защит» заключается в формировании у студентов знаний и умений анализа и синтеза систем автоматического регулирования

Подробнее

Программа дисциплины

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное учреждение высшего профессионального образования «Казанский (Приволжский) федеральный университет» Отделение

Подробнее

РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ ИНФОРМАТИКА

ЮРГИНСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ (ФИЛИАЛ) ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ

Подробнее

Print to PDF without this message by purchasing novapdf (

2 1. Цели и задачи дисциплины: Цель: o формирование целостной системы знаний в области современных компьютерных сетей и систем, возможностей и особенностей их использования в различных областях деятельности;

Подробнее

1. Цели освоения дисциплины

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

Подробнее

АННОТАЦИЯ по дисциплине «Информатика»

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ САМАРСКИЙ ГОСУДАРСТВЕННЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ Институт систем управления Кафедра прикладной информатики и информационной безопасности АННОТАЦИЯ по дисциплине «Информатика»

Подробнее

Шифр направления

2 1. Цели и задачи дисциплины Целью изучения дисциплины «Администрирование информационных систем» является изучение основ администрирования операционных систем, приложений, и сетевых и информационных сервисов,

Подробнее

РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ

УТВЕРЖДАЮ Проректор-директор института ИК Замятин А.В. 2013 г. РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ ОБОРУДОВАНИЕ МАШИНОСТРОИТЕЛЬНОГО ПРОИЗВОДСТВА на 2013-/14 учебный год НАПРАВЛЕНИЕ ООП 151900 «Конструкторско-технологическое

Подробнее

АННОТАЦИЯ РАБОЧЕЙ ПРОГРАММЫ

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ

Подробнее

1. Цели освоения дисциплины

1. Цели освоения дисциплины Цели ООП «Биотехнология» Ц2: Выпускник ОП на основе знаний, умений, навыков приобретает компетенции, необходимые для самореализации в научно-исследовательской и инновационной

Подробнее

Программа дисциплины

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное учреждение высшего профессионального образования «Казанский (Приволжский) федеральный университет» Институт

Подробнее

1. Цель и задачи изучения дисциплины

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

Подробнее

1. Цели освоения дисциплины

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

Подробнее

Программа дисциплины

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное учреждение высшего профессионального образования «Казанский (Приволжский) федеральный университет» Институт

Подробнее

Программа дисциплины

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное учреждение высшего профессионального образования «Казанский (Приволжский) федеральный университет» Институт

Подробнее

Программа дисциплины

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное учреждение высшего профессионального образования «Казанский (Приволжский) федеральный университет» Институт

Подробнее

Рабочая программа учебной дисциплины «объектно-ориентированные языки и системы программирования» уровень основной образовательной программы магистратура

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение высшего профессионального образования

«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)

УТВЕРЖДАЮ

Проректор по учебной работе

_____________________ Л.  А. Боков

«___» ____________________ 2010 г.

РАБОЧАЯ ПРОГРАММА

учебной дисциплины

«Объектно-ориентированные языки и системы программирования»

Уровень основной образовательной программы магистратура

Направление(я) подготовки (специальность):Прикладная математика и информатика 010500.68

Магистерская программа Математическое и программное обеспечение вычислительных машин

Форма обучения очная

Факультет систем управления

Кафедра автоматизированных систем управления

Курс _ 5 Семестр 9 (первый год обучения)

Учебный план набора 2010 года

Факультет систем управления

Профилирующая кафедра Автоматизированных систем управления

Учебный план для набора 2010 года

Курс 5

Семестр 9

Распределение учебного времени (всего часов)

Лекции 20 часов

Лабораторные занятия 40 часов

Всего аудиторных занятий 60 часов

Самостоятельная работа 90 часов

Общая трудоемкость 150 часов

Экзамен 9 семестр

Томск 2010

Рабочая программа составлена с учетом требований Государственного образовательного стандарта высшего профессионального образования (ГОС ВПО) второго поколения по направлению подготовки «Прикладная математика и информатика»

(квалификация (степень) «;магистр прикладной математики и информатики»;), утвержденного Приказом Министерства образования и науки Российской Федерации от 23 марта 2000 г. № 686 с изменениями от 23.03.2006 № 03-749.

Программа рассмотрена и утверждена на заседании кафедры АСУ,

протокол № 1 от “ 28 ” августа 2010 г.

Разработчик, к.т.н., доцент каф. АСУ _____________________ Е.Б. Грибанова

Зав. обеспечивающей кафедрой АСУ

д.т.н., профессор А.М. Кориков

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

Декан, д.т.н., профессор Н.В. Замятин

Заведующий профилирующей и

выпускающей кафедрой АСУ,

д.т.н., профессор А.М. Кориков

1. ЦЕЛИ И ЗАДАЧИ ДИСЦИПЛИНЫ И ЕЕ МЕСТО

В УЧЕБНОМ ПРОЦЕССЕ

Дисциплина «Объектно-ориентированные языки и системы программирования» является специальной дисциплиной магистерской программы. Эта дисциплина читается в 9 семестре и предусматривает чтение лекций, проведение лабораторных занятий и получение различного рода консультаций.

Целью дисциплины является формирование у студентов систематизированных знаний и практических навыков в области объектно-ориентированного программирования.

Основной задачей изучения дисциплины является формирование у студентов теоретических знаний и практических навыков объектно-ориентированного программирования с использованием языка высокого уровня Java.

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

В результате изучения дисциплины студент должен:

Знать:

• принципы объектно-ориентированной разработки программ;

• способы описания программы на языке моделирования.

Уметь:

• пользоваться принципами объектно-ориентированной разработки для написания программ на языке высокого уровня;

Владеть:

• объектно-ориентированной технологией разработки программ;

• языком высокого уровня Java и средой разработки Eclipse;

• языком моделирования систем UML.

Дисциплина «Объектно-ориентированные языки и системы программирования» (ООЯСП) относится к числу специальных дисциплин. Успешное овладение дисциплиной предполагает предварительные знания операционных систем, сетей ЭВМ и телекоммуникаций, предусмотренном специальностью «Прикладная математика и информатика», а также навыки программирования на языках высокого уровня.

2. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ

2.1 Лекционный курс (20 часов)

Тема 1. Системы объектно-ориентированного программирования. Технология Java

Лекции 1 час

Самостоятельная работа 1 часа

Обзор систем объектно-ориентированного программирования. История развития Java. Основные понятия Java.

Тема 2. Интегрированная среда разработки Eclipse

Лекции 1 час

Самостоятельная работа 1 часа

Работа со средой Eclipse. Навигация ресурсов. Инструмент разработки Java Development Kit (JDK).

Тема 3. Объектно-ориентированное программирование на Java

Лекции 2 часа

Самостоятельная работа 1 часа

Понятие объекта. Понятие класса, отношения между классами. Понятие наследования. Понятие интерфейса. Понятие пакета.

Тема 4. Типы данных, переменные, операторы языка Java

Лекции 2 часа

Самостоятельная работа 1 часа

Идентификаторы, типы данных, литералы. Приведение типов. Объявление и инициализация переменных. Массивы примитивных типов. Операторы Java.

Тема 5. Создание и использование объектов языка Java. Классы и объекты String. Классы и объекты Java API

Лекции 2 часа

Самостоятельная работа 1 часа

Объявление, создание экземпляров, инициализация, хранение объектов в оперативной памяти. Использование класса String. Спецификация классов Java API.

Тема 6. Операторы управления ходом программы на языке Java.

Лекции 2 часа

Самостоятельная работа 1 час

Операторы цикл. Операторы условия. Оператор выбора.

Тема 7. Разработка методов, инкапсуляция и конструкторы, массивы объектов

Лекции 2 часа

Самостоятельная работа 1 часа

Разработка методов в классах Java. Инкапсуляция и конструкторы. Массивы и объекты.

Тема 8. Наследование, интерфейсы и полиморфизм

Лекции 2 часа

Самостоятельная работа 1 часа

Наследование. Интерфейсы и абстрактные классы. Полиморфизм. Коллекции и генерики в Java.

Тема 9. Язык объектно-ориентированного моделирования UML

Лекции 2 часа

Самостоятельная работа 1 часа

Основные элементы языка UML. Виды диаграмм: диаграммы классов, объектов, последовательности, состояний, вариантов использования.

Тема 10. Механизм исключений и операции ввода/вывода

Лекции 2 часа

Самостоятельная работа 1 часа

Механизм исключений. Файловый ввод/вывод. Сетевое взаимодействие.

Тема 11. Графический интерфейс пользователя на основе библиотеки Swing

Лекции 2 часа

Разработка графического интерфейса с применением компонента Visual Editor среды Eclipse.

Всего

Лекционный курс 20 часов

Самостоятельная работа 10 часов

2.2 Лабораторные работы

Темы лабораторных работ

Кол-во часов

Тема 1 Компиляция и запуск Java-приложений из командной строки

4 часа

Тема 2 Создание и отладка проекта в среде Ecipse. Элементы объектно-ориентированного программирования Java.

4 часа

Тема 3 Объявление, инициализация и использование переменных

4 часа

Тема 4 Создание и использование объектов

4 часа

Тема 5 Операторы управления ходом программ

4 часа

Тема 6 Разработка методов в классах Java, использование инкапсуляции и конструкторов.

4 часа

Тема 7 Создание и использование массивов

4 часа

Тема 8 Наследование, переопределение методов, полиморфизм. Интерфейсы и абстрактные классы

4 часа

Тема 9 Механизм исключений и операции ввода/вывода

4 часа

Тема 10 Разработка графического интерфейса в среде Eclipse

4 часа

Всего часов лабораторных занятий 40 часов

Для подготовки к лабораторным работам и оформления отчетов

требуется 40 часов самостоятельной работы.

2.3 Самостоятельная работа

N

п/п

Наименование работы

Количество часов

Форма контроля

1

Проработка лекционного материала

10

Опрос на занятиях (устно)

2

Самостоятельное изучение тем теоретической части

Темы для самостоятельного изучения

  1. Язык UML. Диаграммы обзора взаимодействия, синхронизации, пакетов, компонентов.

  2. Классы Java для работы в Интернет.

  3. Шаблоны объектно-ориентированного проектирования.

20

Домашние задания по каждой теме,

тесты Контрольные работы

3

Подготовка отчетов по лабораторным работам

(написание программы с помощью объектно-ориентированного языка программирования Java, тестирование программы, выполнение расчетов, их интерпретация, написание отчета)

40

Защита отчетов

4

Подготовка к контрольному тестированию

20

экзамен

Всего часов самостоятельной работы 90 часов

3. УЧЕБНО-МЕТОДИЧЕСКОЕ И ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ

3.1. основная литература

1. Павловская Т.А. C/C++. Программирование на языке высокого уровня : учебник для вузов. — СПб. : Питер, 2009. — 464 с. (4 экз.)

2. Лаптев В.В. С++. Объектно-ориентированное программирование : учебное пособие. — СПб. : Питер, 2008. – 457 с. (3 экз.)

3. Грибанова Е.Б. Объектно-ориентированные языки и системы программирования. Учебное методическое пособие по лабораторным работам. – Томск, 2010. – 21с./ /learning/mag010400/d11/m010400_d11_labs.doc/ (электронный ресурс каф. АСУ ТУСУР)

3.2. дополнительная литература

1. Кьоу Д. Объектно-ориентированное программирование. — СПб.: Питер, 2005. – 237 с. (20 экз.)

2. Хорев П.Б. Технологии объектно-ориентированного программирования. – М.: Академия, 2004. – 446 с. (30 экз.)

3. Леоненков А.В. Объектно-ориентированный анализ и проектирование с использованием UML и IBM Rational Rose. — М.: БИНОМ. Лаборатория знаний, 2006. – 318 c. (20 экз.)

4. Ноутон П., Шилдт Г. Java 2 в подлиннике. – СПб: BHV – Петербург, 2006. – 1072 с. (1 экз.)

5. Бойченко И.В. Основы технологии Java. – Томск : ТУСУР, 2009. – 236 с.

6. Бойченко И.В., Мардяшов А.В. Методические указания к лабораторным работам по дисциплине «Технология Java». – Томск : ТУСУР, 2008. – 73 с.

7. Хабибуллин И. Создание распределенных приложений Java 2. – СПб: БХВ – Петербург, 2002. – 704 с. (1 экз.)

8. Вязовик Н.А. Программирование на Java /department/pl/javapl.

9. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений. – М: Издательский дом «Вильямс», 2008. – 720 с. (1 экз.)

10. Приемы ООП. Паттерны проектирования / Э.Гамма и др. — СПб.: Питер, 2001 г. – 656 с.

3.3. Учебно-методическое пособие по самостоятельной работе студентов

Грибанова Е.Б. Объектно-ориентированные языки и системы программирования. Методические указания по самостоятельной и индивидуальной работе студентов. – Томск, 2010. – 21с. / /learning/mag010400/ (электронный ресурс каф. АСУ ТУСУР)

3.4. Лицензионное программное обеспечение

Среда разработки Eclipse, виртуальная машина Java.

3.5. Internet-ресурсы:

1. — научные журналы издательства Wiley&Sons

2. / — научные журналы издательства Elsevier

3. — национальный открытый университет

4. – электронные курс по дисциплине Основы технологии Java 2.

4. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ

Для проведения лекций по дисциплине используются персональный ПК с проектором. Лабораторные занятия осуществляются в компьютерном классе с использованием среды разработки Eclipse.

5. БАЛЛЬНО-РЕЙТИНГОВАЯ СИСТЕМА

Курс 5, семестр 9 Контроль обучения – Экзамен.

Максимальный семестровый рейтинг – 100 баллов.

По дисциплине «Объектно-ориентированные языки и системы программирования» (ООЯСП) проведение экзамена является обязательным. При этом балльная оценка в соотношении 70/30 распределяется на две составляющие: семестровую и экзаменационную. Т.е. 70 баллов можно получить за текущую работу в семестре, а 30 баллов – за ответы на экзамене.

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

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

Текущий контроль изучения дисциплины состоит из контроля за усвоением теоретического материала – проведение 3 тестов.

В таблице 5.1 содержится распределение баллов в течение семестра для дисциплины «Объектно-ориентированные языки и системы программирования» (ООЯСП)», завершающейся экзаменом и содержащей 10 лекций (20 часов), 10 лабораторных работ (40 часов), проводимых в течение семестра и 3 итоговых теста во время проведения двух контрольных точек. В таблице 5.2 представлен пересчет суммы баллов по 1 и 2 контрольной точке в традиционную оценку. В таблице 5.3 – представлен пересчет итоговой суммы баллов в традиционную и международную оценку.

Таблица 5.1 – Дисциплина «Объектно-ориентированные языки и системы программирования» (ООЯСП) (экзамен, лекции, лабораторные работы, тесты)

Элементы учебной деятельности

Максимальный балл на 1-ую контрольную точку с начала семестра

Максимальный балл за период между 1КТ и 2КТ

Максимальный балл за период между 2КТ и на конец семестра

Всего за

семестр

Посещение занятий

4

4

4

12

Выполнение и защита резуль-татов лабораторных работ

10

10

10

30

Тестовый контроль

5

5

5

15

Компонент своевременности

4

4

5

13

Итого максимум за период:

23

23

24

70

Нарастающим итогом

23

46

70

Экзамен

30

ИТОГО

100

По результатам текущего контроля формируется допуск студента к итоговому контролю – экзамену по дисциплине. Экзамен осуществляется в форме опроса по теоретической части дисциплины. В составе суммы баллов, полученной студентом по дисциплине, заканчивающейся экзаменом, экзаменационная составляющая должна быть не менее 10 баллов. В противном случае экзамен считается не сданным, студент в установленном в ТУСУРе порядке обязан его пересдать.

Методика выставления баллов за ответы на экзамене определяется из расчета до 10 баллов за каждый из 3 вопросов в билете.

Неудовлетворительной сдачей экзамена считается экзаменационная составляющая менее 10 баллов. При неудовлетворительной сдаче экзамена (

Таблица 5.2 – Пересчет баллов в оценки за контрольные точки

Баллы на дату контрольной точки

Оценка

 90 % от максимальной суммы баллов на дату КТ

5

От 70% до 89% от максимальной суммы баллов на дату КТ

4

От 60% до 69% от максимальной суммы баллов на дату КТ

3

2

Таблица 5. 3 – Пересчет суммы баллов в традиционную и международную оценку

Оценка (ГОС)

Итоговая сумма баллов, учитывает успешно сданный экзамен

Оценка (ECTS)

5 (отлично)

90 — 100

А (отлично)

4 (хорошо)

85 – 89

В (очень хорошо)

75 – 84

С (хорошо)

70 — 74

D (удовлетворительно)

3 (удовлетворительно)

65 – 69

60 — 64

E (посредственно)

2 (неудовлетворительно),
(не зачтено)

Ниже 60 баллов

F (неудовлетворительно)

09.

03.02 Системотехника и информационные технологии проектирования и управления в строительстве

№ п/п

Индекс

Наименование дисциплины

Рабочие программы

1.

Б1.Б.1

Иностранный язык

Рабочая программа

2.

Б1.Б.2

История

Рабочая программа

3.

Б1.Б.3

Операционный менеджмент

Рабочая программа

4.

Б1.Б.4

Математика

Рабочая программа

5.

Б1.Б.5

Инженерная графика

Рабочая программа

6.

Б1.Б.6

Компьютерная графика

Рабочая программа

7.

Б1.Б.7

Программирование на языке высокого уровня

Рабочая программа

8.

Б1.Б.8

Объектно-ориентированное программирование

Рабочая программа

9.

Б1.Б.9

Физика

Рабочая программа

10.

Б1.Б.10

Психология

Рабочая программа

11.

Б1.Б.11

Экономика

Рабочая программа

12.

Б1.Б.12

Информатика

Рабочая программа

13.

Б1.Б.13

Дискретный анализ информационных систем

Рабочая программа

14.

Б1.Б.14

Операционные системы

Рабочая программа

15.

Б1.Б.15

Электронные вычислительные машины и периферийные устройства

Рабочая программа

16.

Б1.Б.16

Философия

Рабочая программа

17.

Б1.Б.17

Базы данных

Рабочая программа

18.

Б1.Б.18

Сети и телекоммуникации

Рабочая программа

19.

Б1.Б.19

Правоведение

Рабочая программа

20.

Б1.Б.20

Безопасность жизнедеятельности и экология

21.

Б1.Б.20.1

Безопасность жизнедеятельности

Рабочая программа

22.

Б1.Б.20.2

Основы экологии

Рабочая программа

23.

Б1.Б.21

Метрология, стандартизация, сертификация и управление качеством

Рабочая программа

24.

Б1.Б.22

Защита информации

Рабочая программа

25.

Б1.Б.23

Физическая культура и спорт

Рабочая программа

26.

Б1.В.ОД.1

Информационные системы, технологии и автоматизация в строительстве

Рабочая программа

27.

Б1.В.ОД.2

Электротехника, электроника и схемотехника

Рабочая программа

28.

Б1.В.ОД.3

Геометрическое компьютерное моделирование

Рабочая программа

29.

Б1.В.ОД.4

Информационное моделирование объектов строительства

Рабочая программа

30.

Б1.В.ОД.5

Вычислительные методы информационных систем

Рабочая программа

31.

Б1.В.ОД.6

Автоматизация организации и планирования строительного производства

Рабочая программа

32.

Б1.В.ОД.7

Системное администрирование

Рабочая программа

33.

Б1.В.ОД.8

Оптимизация процессов и принятие решений

Рабочая программа

34.

Б1.В.ОД.9

Web-технологии в информационных системах

Рабочая программа

35.

Б1.В.ОД.10

Системотехника строительства

Рабочая программа

36.

Б1.В.ОД.11

Системы искусственного интеллекта

Рабочая программа

37.

Б1.В.ОД.12

Автоматизированные технологии управления проектами

Рабочая программа

38.

Б1.В.ОД.13

Геоинформационные системы

Рабочая программа

39.

Физическая культура и спорт (элективная дисциплина)

Рабочая программа

40.

Б1.В.ДВ.1.1

Моделирование систем

Рабочая программа

41.

Б1.В.ДВ.1.2

Автоматизация расчета строительных конструкций

Рабочая программа

42.

Б1.В.ДВ.2.1

Основы теории управления и логистики

Рабочая программа

43.

Б1.В.ДВ.2.2

Модели расчета строительных конструкций

Рабочая программа

44.

Б1.В.ДВ.3.1

Архитектура прикладного программного обеспечения

Рабочая программа

45.

Б1.В.ДВ.3.2

Технологии проектирования

Рабочая программа

46.

Б1.В.ДВ.3.3

Социальная адаптация лиц с ограниченными возможностями в условиях профессиональной деятельности

Рабочая программа

47.

Б1.В.ДВ.4.1

Управление и автоматизированные системы управления строительством

Рабочая программа

48.

Б1.В.ДВ.4.2

Автоматизация проектирования строительных конструкций

Рабочая программа

49.

Б1.В.ДВ.5.1

Корпоративные информационные системы и технологии, виртуальные организации

Рабочая программа

50.

Б1. В.ДВ.5.2

Автоматизация проектирования инженерных систем и сетей

Рабочая программа

51.

Б1.В.ДВ.6.1

Технологии программирования

Рабочая программа

52.

Б1.В.ДВ.6.2

Автоматизация архитектурного проектирования

Рабочая программа

53.

Б1.В.ДВ.7.1

Информационное обеспечение автоматизированных систем обработки информации

Рабочая программа

54.

Б1.В.ДВ.7.2

Информационное обеспечение систем автоматизации проектирования

Рабочая программа

55.

Б1.В.ДВ.8.1

Проектирование автоматизированных систем обработки информации и управления

Рабочая программа

56.

Б1.В.ДВ.8.2

Разработка систем автоматизации проектирования

Рабочая программа

Что такое объектно-ориентированное программирование? — Computer Science Degree Hub

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

Определение

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

Рейтинг: 10 лучших онлайн-степеней в области ИТ (бакалавриат)

Процедурное и объектно-ориентированное программирование

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

Использование

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

Преимущества

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

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

Введение в языки объектно-ориентированного программирования: руководство

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

Языки объектно-ориентированного программирования (ООП) есть везде, куда бы мы ни посмотрели. Многие из наиболее широко используемых языков программирования, составляющих сегодня компьютерный мир, являются объектно-ориентированными. Фактически, многие компьютерные программы и большая часть контента в сети построены на объектно-ориентированных языках высокого уровня . Понимание того, как работают объектно-ориентированные языки и почему они полезны, важно почти для каждой карьеры в области вычислений.

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

Что такое язык программирования?

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

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

Что такое объектно-ориентированные языки программирования?

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

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

Парадигмы программирования

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

Объектно-ориентированное программирование построено на объектах, которые представляют собой структуры данных, содержащие как данные (свойства или атрибуты), так и код (процедуры или методы).Объекты могут изменять себя с помощью «this» или «self». В большинстве языков ООП почти все является объектом, который может иметь как значения, так и исполняемый код. Каждый объект уникален, и хотя он может быть копией другого объекта, его переменные могут отличаться от переменных любого другого объекта.

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

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

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

Принципы объектно-ориентированного программирования

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

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

  1. Инкапсуляция
  2. Абстракция
  3. Наследование
  4. Полиморфизм

Четыре принципа

Давайте рассмотрим эти четыре принципа более глубоко.

  • Инкапсуляция — Инкапсуляция — это концепция привязки данных к функциям, которые работают как функция безопасности для обеспечения безопасности этих данных. Например, многие языки ООП запрещают что-либо, кроме определенных методов в классе, владеющем данными, для доступа к этим данным. Часто это делается специально для обеспечения безопасности определенных данных.
  • Абстракция — Абстракция — это идея о том, что если вы слишком часто делаете что-то одно, это должно быть самостоятельное целое. Например, если программист многократно переписывает одну и ту же функцию для разных объектов, эта функция может быть абстрагирована, чтобы стать ее собственной сущностью.
  • Наследование — Наследование — это то, на что это похоже, и чаще всего определяется как отношение «есть». Это позволяет определенным классам находиться под зонтиком других классов. Эти классы могут наследовать информацию и функциональность от этого класса, а также иметь возможность расширять эту функциональность. Это позволяет нам повторно использовать код, который мы уже набрали в других классах.
  • Полиморфизм — Полиморфизм означает «принимать более одной формы». В смысле языков ООП это относится к способности обрабатывать объекты по-разному в зависимости от того, что они собой представляют.Это позволяет нам определять различные методы обработки объектов на основе их производного класса. Например, если нам нужно определить размер чего-либо, мы можем изменить способ измерения в зависимости от того, что это такое. Если это деревянная доска, я бы измерил ее в дюймах. Это в отличие от объема воды, который я бы измерял по весу. Если мы используем полиморфизм, мы можем создать функцию, которая может принимать любой объект и при этом давать нам разумные измерения.

Популярные языки объектно-ориентированного программирования

Java, Python, C ++, Lisp и Perl — все это примеры популярных объектно-ориентированных языков программирования. Они поддерживают программирование с использованием парадигмы классов и объектов.

Пять самых популярных объектно-ориентированных языков включают:

  1. Java
  2. Python
  3. C ++
  4. Ruby
  5. C #
  • Java Java повсюду, и это один из самых популярных языков. используемые и востребованные языки за все время. Девиз Java — «напиши один раз, запусти где угодно», и это отражается в количестве платформ, на которых он работает, и местах, где он используется.
  • Python Python универсален и используется во многих местах. Однако Python прочно обосновался в машинном обучении и науке о данных. Это один из предпочтительных языков в этой новой и постоянно развивающейся области.
  • C ++ — C ++ имеет скорость C с функциональностью классов и объектно-ориентированной парадигмой. Это скомпилированный, надежный и мощный язык. Фактически, он даже используется для создания компиляторов и интерпретаторов для других языков.
  • Ruby — Ruby — еще один язык программирования общего назначения.Он был построен для простоты. С учетом сказанного, Ruby — невероятно мощный язык. Создатель Ruby Юкихиро «Мац» Мацумото сказал: «Рубин очень прост на вид, но очень сложен внутри, как и наше человеческое тело».
  • C # — C # — это язык программирования, разработанный Microsoft. Он был разработан для улучшения существующих концепций C. C # поддерживает платформу Microsoft .NET вместе со многими веб-приложениями, играми, настольными приложениями и мобильными приложениями.

Существуют и другие объектно-ориентированные языки, которые мы не рассматривали выше.Perl, Objective-C, Dart, Lisp, JavaScript и PHP тоже являются объектно-ориентированными или поддерживают объектно-ориентированные принципы.

Плюсы и минусы объектно-ориентированных языков программирования

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

Плюсы
Повторное использование

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

Параллельная разработка

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

Техническое обслуживание

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

Безопасность

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

Модульность

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

Минусы
Часто беспорядочно

Поскольку объектно-ориентированные языки настолько настраиваемы и масштабируемы, можно легко потерять понимание того, как работает код. Код ООП может работать по-разному. Есть много методологий программирования в ООП, которые не работают с другими методологиями, неэффективны или сложны в использовании.

Требуется дополнительное планирование

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

Непрозрачность

Это как плюс, так и минус. Объекты и функции могут работать независимо. Они могут получать информацию и (обычно) возвращать надежные результаты. В результате они могут оказаться черными ящиками, а это означает, что то, что они делают, не всегда очевидно.Хотя программист, вероятно, создал этот объект и знает, что он делает, языки ООП просто не так прозрачны, как другие языки.

Производительность

Объектно-ориентированные языки часто снижают производительность. Программы, написанные на языках ООП, часто больше и требуют больше вычислительных усилий для запуска, чем функциональные языки. Однако это не всегда так или важно. C ++ — язык ООП, но это один из самых быстрых доступных языков. В то же время скорость не всегда важна.Разница в скорости становится очевидной только при обработке огромных или сложных вычислений или в случаях, когда требуется экстремальная скорость.

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

Объектно-ориентированное программирование — катастрофа на триллион долларов | Илья Суздальницкий | Лучшее программирование

Фото Мики Баумейстера на Unsplash

Что такое состояние? Проще говоря, состояние — это любые временные данные, хранящиеся в памяти.Подумайте о переменных или полях / свойствах в ООП. Императивное программирование (включая ООП) описывает вычисления в терминах состояния программы, и изменяет это состояние . Декларативное (функциональное) программирование вместо этого описывает желаемых результатов, и не указывает явно изменения состояния.

Мутабельное состояние — акт умственного жонглирования

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

— Рич Хики, создатель Clojure

Источник изображения: https://www.flickr.com/photos/[email protected]/8707342427

Состояние само по себе довольно безобидно. Однако изменчивое состояние — серьезный преступник. Особенно, если поделится. Что такое изменчивое состояние? Любое состояние, которое может измениться. Подумайте о переменных или полях в ООП.

Пример из реальной жизни, пожалуйста!

У вас есть чистый лист бумаги, вы пишете на нем записку, и в результате вы получаете тот же лист бумаги в другом состоянии (текст).Фактически, вы изменили состояние этого листа бумаги.

Это совершенно нормально в реальном мире, поскольку никому, , вероятно, нет дела до этого листа бумаги. Если только этот лист бумаги не является оригинальной картиной Моны Лизы.

Ограничения человеческого мозга

Почему изменчивое состояние является такой большой проблемой? Человеческий мозг — самая мощная машина в известной вселенной. Однако наш мозг действительно плохо работает с состоянием, так как мы можем одновременно удерживать в нашей рабочей памяти только около 5 элементов .Намного легче рассуждать о фрагменте кода, если вы думаете только о , что делает код , а не о том, какие переменные он меняет в кодовой базе.

Программирование с изменяемым состоянием — это акт умственного жонглирования️. Не знаю, как вы, но я, наверное, мог бы жонглировать двумя шарами. Дайте мне три или более мячей, и я обязательно все их уроню. Почему же тогда мы пытаемся выполнять этот акт мысленного жонглирования каждый божий день на работе?

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

Разбросанное состояние

Фото Маркуса Списке на Unsplash

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

Реальный пример, пожалуйста!

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

Однако есть одна загвоздка — все части грузовика случайным образом перемешаны с частями других ваших игрушек Lego. И они снова были помещены в 50 разных ящиков случайным образом. И вам не разрешается группировать части грузовика вместе — вы должны держать в голове, где находятся различные части грузовика, и вынимать их можно только по одной.

Да, в конце концов, соберете этот грузовик, но сколько времени на это у вас уйдет?

Как это связано с программированием?

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

Чтобы облегчить нашу жизнь, лучше всего иметь дело с состоянием только очень небольшой части кодовой базы. Пусть основные части вашего приложения будут чистыми и не сохранят состояния. На самом деле это основная причина огромного успеха паттерна потока во внешнем интерфейсе (он же Redux).

Беспорядочно разделяемое состояние

Как будто наша жизнь уже недостаточно сложна из-за разбросанного изменяемого состояния, ООП идет еще дальше!

Пример из реального мира, пожалуйста!

Изменяемое состояние в реальном мире почти никогда не является проблемой, поскольку вещи хранятся конфиденциально и никогда не передаются. Это «правильная инкапсуляция» в действии. Представьте себе художника, который работает над следующей картиной Моны Лизы. Он работает над картиной в одиночку, заканчивает, а затем продает свой шедевр за миллионы.

Теперь ему надоели все эти деньги, и он решает поступить немного по-другому. Он считает, что было бы неплохо устроить вечеринку по рисованию. Он приглашает своих друзей эльфа, Гэндальфа, полицейского и зомби, чтобы они помогли ему. Командная работа! Все они начинают рисовать на одном холсте одновременно. Конечно, ничего хорошего из этого не выходит — картина полная катастрофа!

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

Проблемы параллелизма

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

Не все государства зло

Все государства зло? Нет, государство Алана Кея, наверное, не зло! Мутация состояния, вероятно, прекрасна, если она действительно изолирована (а не изолирована «путем ООП»).

Также вполне нормально иметь неизменяемые объекты передачи данных. Ключ здесь — «неизменный». Такие объекты затем используются для передачи данных между функциями.

Однако такие объекты также сделали бы методы и свойства ООП полностью избыточными.Какая польза от использования методов и свойств объекта, если он не может быть изменен?

Изменчивость является неотъемлемой частью ООП

Некоторые могут возразить, что изменяемое состояние — это выбор дизайна в ООП, а не обязательство. В этом утверждении есть проблема. Это не дизайнерский выбор, а практически единственный вариант. Да, можно передавать неизменяемые объекты методам в Java / C #, но это делается редко, поскольку большинство разработчиков по умолчанию используют мутацию данных. Даже если разработчики попытаются правильно использовать неизменяемость в своих программах ООП, языки не предоставляют встроенных механизмов неизменяемости и эффективной работы с неизменяемыми данными (т.е. постоянные структуры данных).

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

Невозможно использовать ООП, не вызывая мутаций состояния.

Концепции объектно-ориентированного программирования | Software Guild

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

Объектно-ориентированное программирование — один из таких терминов, и это общий термин, лежащий в основе разработки программного обеспечения. Как и многие термины программирования, в нем используются знакомые слова незнакомым образом.Если программирование — это просто электронное написание кода, как его можно ориентировать на объекты? Разве объекты не являются физическими вещами в реальном мире?

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

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

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

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

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

Объекты — способ упростить этот процесс.

Что такое объект?

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

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

Классы и экземпляры

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

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

Одна функция, много классов

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

Как используется объектно-ориентированное программирование?

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

Воспроизведение концепций реального мира

Объектно-ориентированное программирование во многих отношениях отражает то, как работает реальный мир. Различным людям в компании не обязательно знать, как другие сотрудники выполняют свою работу; у них есть информация, необходимая для самостоятельной работы, и каждый вносит свой вклад в общее. То же самое и с объектами в коде. Автомобиль создан для одного: перевозить людей из одного места в другое.Однако существуют разные виды автомобилей, которые служат людям немного по-разному. Методы и создание экземпляров похожи.

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

Упрощающий код

Поскольку объектно-ориентированное программирование направлено на устранение дублирования кода, объектно-ориентированный код проще, короче и легче читается. В нем также легче работать, потому что, если у вас есть класс, работающий так, как вы хотите, вам не нужно беспокоиться о том, что он делает; вам нужно только беспокоиться о том, как это повлияет на другие части кода.

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

Объектно-ориентированное программирование: Java и C #

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

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

«Я вошел в Гильдию программного обеспечения, ненавидя и боясь объектно-ориентированного программирования, поскольку на протяжении многих лет я пытался и пытался заставить свой мозг осмыслить безумные концепции», — сказал Урваши Атодария, который прошел учебный курс по программированию в 2016 году. «Однако в Гильдии я узнал, что эти концепции вовсе не были сумасшедшими».

Гильдия программного обеспечения предлагает 12-недельную программу полного рабочего дня или 10-месячную онлайн-программу в качестве варианта неполного рабочего дня, так что вы можете изучить Java или C # /.NET с помощью мастеров-инструкторов в удобном для вас темпе. По завершении вы будете готовы к работе на должности младшего разработчика. Подайте заявку на учебный курс по программированию сегодня.

Объектно-ориентированное программирование

Объектно-ориентированное программирование

Ответ:

  • Класс — это описание возможного объекта.
  • Объект — уникальный экземпляр класса.

Или вы могли бы сказать, что класс — это план объекта и объект — это то, что получается, когда план был выполнен.


Объектно-ориентированного программирования состоит из трех этапов:

  1. Создание программы.
    • Программист определяет классы, описывающие объекты что программа будет использовать во время работы.
    • Программист определяет класс, содержащий статический main () метод, который используется для запуска программы.
  2. Компиляция программы.
    • Программа скомпилирована в байт-код.
  3. Запуск программы.
    • Интерпретатор Java ищет статический main () метод и запускает его.
      • Поскольку main () статичен он может начать работать даже хотя объекты еще не созданы.
    • По мере выполнения программы создаются объекты и активируются их методы.
      • Программа выполняет свою работу путем создания объектов и активируя их методы.
      • Точный порядок создания объекта и активации метода зависит от к выполняемой задаче и исходные данные.

Этап, на котором выполняется скомпилированная программа, называется время выполнения . Ваша программа похожа на сценарий пьесы. Работа, которую вы описываете в своей программе (или пьесе) выполняется после того, как вы закончили описание и поставили это в руках CPU (или актеров).Во время выполнения (время показа) Things Happen. Ваша прекрасная программа оживает. Данные считываются; производятся расчеты; файлы написано.


ВОПРОС 2:

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

  1. Сначала вы спланируете рабочих и материалы, которые вам понадобятся.
  2. Затем вы собираете своих рабочих и материалы.
  3. Затем команда работает с материалом, пока работа не будет сделана.

(Обдуманный вопрос 🙂 Вы решили открыть бизнес по доставке пиццы состоящий из вас и нескольких сотрудников. Какие должностные инструкции будут у этих сотрудников?

Javanotes 8.1, Раздел 1.5 — Объекты и объектно-ориентированное программирование

Раздел 1.5

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


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

В течение 1970-х и 80-х годов основная разработка программного обеспечения Методология структурного программирования. В Подход структурного программирования к разработке программ был основан на следующих Совет: Чтобы решить большую проблему, разбейте ее на несколько частей и работать над каждой частью отдельно; Чтобы решить каждую деталь, относитесь к ней как к новой проблеме которые сами по себе могут быть разбиты на более мелкие проблемы; в конце концов, вы будете работать над проблемами, которые можно решить напрямую, без дальнейшего разложение.Такой подход называется программированием сверху вниз.

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

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


Итак, на практике нисходящий дизайн часто сочетается с восходящим дизайном. В восходящем дизайне подход заключается в начните «снизу», с проблем, которые вы уже знаете, как решить (и для которого у вас уже может быть под рукой многоразовый программный компонент). Из там вы можете двигаться вверх к решению общей проблемы.

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

Один из распространенных форматов программных модулей — содержать некоторые данные вместе с некоторые подпрограммы для управления этими данными. Например, модуль списка рассылки может содержать список имен и адресов вместе с подпрограммой для добавления новое имя, подпрограмма для печати почтовых этикеток и так далее.В таком модули, сами данные часто скрыты внутри модуля; программа, которая использует модуль может затем манипулировать данными только косвенно, вызывая подпрограммы, предоставляемые модулем. Это защищает данные, поскольку может только можно манипулировать известными, четко определенными способами. И это упрощает программы использовать модуль, поскольку им не нужно беспокоиться о деталях того, как данные представлены. Информация о представлении данных скрытый.

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

Центральным понятием объектно-ориентированного программирования является объект, который представляет собой своего рода модуль, содержащий данные и подпрограммы. Точка зрения ООП заключается в том, что объект — это своего рода самодостаточная сущность, имеющая внутреннее состояние (данные, которые он содержит) и которые могут отвечать на сообщения (вызовы его подпрограмм).Объект списка рассылки, например, имеет состояние, состоящее из списка имен и адресов. если ты отправьте ему сообщение с просьбой добавить имя, он ответит изменением своего состояние, чтобы отразить изменение. Если вы отправите ему сообщение о печати сам он ответит, распечатав свой список имен и адресов.

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


Объекты следует воспринимать как «знающие», как отвечать на определенные сообщения.Различные объекты могут по-разному реагировать на одно и то же сообщение. За Например, сообщение «печать» будет давать очень разные результаты в зависимости от объект, которому оно отправлено. Это свойство объектов — разные объекты могут отвечать на одно и то же сообщение по-разному — это называется полиморфизмом.

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

Например, рассмотрим программу рисования, которая позволяет пользователю рисовать линии, прямоугольники, овалы, многоугольники и кривые на экране. В программе каждый видимый объект на экране может быть представлен программным объектом в программа. В программе будет пять классов объектов, по одному на каждый тип видимого объекта, который можно нарисовать. Все строки принадлежат одному класс, все прямоугольники в другой класс и т. д. Эти классы очевидно связанные; все они представляют собой «рисованные объекты». Они бы для Например, все предположительно смогут ответить на сообщение «нарисуй себя». Другой уровень группировки, основанный на данных, необходимых для представления каждого типа объект, менее очевиден, но будет очень полезен в программе: мы можем сгруппировать многоугольники и кривые вместе как «многоточечные объекты», а линии, прямоугольники, а овалы — это «двухточечные объекты.»(Линия определяется двумя ее конечными точками, прямоугольник по двум его углам и овал по двум углам прямоугольника который его содержит. Прямоугольники, о которых я говорю, имеют стороны, которые являются вертикальными и горизонтальными, чтобы их можно было указать просто две точки; это обычное значение слова «прямоугольник» в программах рисования.) Мы могли бы изобразить эти отношения следующим образом:

DrawableObject, MultipointObject и TwoPointObject будут классами в программа. MultipointObject и TwoPointObject будут подклассами из DrawableObject. Класс Line будет подкласс TwoPointObject и (косвенно) DrawableObject. Подкласс Говорят, что класс наследует свойства этого учебный класс. Подкласс может добавлять к своему наследованию и даже «переопределять» часть этого наследования (путем определения другого ответа на какое-то сообщение). Тем не менее, линии, прямоугольники и т. Д. можно рисовать. объекты, а класс DrawableObject выражает эту связь.

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

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

Объектно-ориентированное программирование · HonKit

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

Классы и объекты — два основных аспекта объектно-ориентированного программирования. Класс создает новый тип , где объектов — это экземпляров класса.Аналогия заключается в том, что у вас могут быть переменные типа int , что означает, что переменные, хранящие целые числа, являются переменными, которые являются экземплярами (объектами) класса int .

Примечание для программистов на статическом языке

Обратите внимание, что даже целые числа рассматриваются как объекты (класса int ). Это не похоже на C ++ и Java (до версии 1.5), где целые числа являются примитивными собственными типами.

Дополнительные сведения о классе см. В справке (int) .

Программисты

C # и Java 1.5 найдут это похожим на концепцию упаковки и распаковки .

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

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

Класс создается с использованием ключевого слова class . Поля и методы класса перечислены в блоке с отступом.

Самостоятельная

Методы класса

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

Хотя этому параметру можно дать любое имя, настоятельно рекомендуется, , использовать имя self — любое другое имя определенно осуждается. Использование стандартного имени дает множество преимуществ — любой читатель вашей программы сразу распознает его, и даже специализированные IDE (интегрированные среды разработки) могут помочь вам, если вы используете или .

Примечание для программистов на C ++ / Java / C #

self в Python эквивалентен this указателю в C ++ и this ссылке в Java и C #.

Вам должно быть интересно, как Python дает значение для self и почему вам не нужно указывать для него значение. Пример прояснит это. Допустим, у вас есть класс с именем MyClass и экземпляр этого класса с именем myobject . Когда вы вызываете метод этого объекта как myobject.method (arg1, arg2) , он автоматически преобразуется Python в MyClass.method (myobject, arg1, arg2) — это все особенное self . .

Это также означает, что если у вас есть метод, который не принимает аргументов, у вас все равно должен быть один аргумент — self .

Классы

Самый простой из возможных классов показан в следующем примере (сохраните как oop_simplestclass.py ).

  класс Человек:
    проходить

p = Человек ()
печать (p)
  

Выход:

  $ python oop_simplestclass.py
<__ main __. Экземпляр лица по адресу 0x10171f518>
  

Как это работает

Мы создаем новый класс, используя оператор class и имя класса. За ним следует блок операторов с отступом, которые составляют тело класса. В этом случае у нас есть пустой блок, который указывается с помощью оператора pass .

Затем мы создаем объект / экземпляр этого класса, используя имя класса, за которым следует пара круглых скобок. (Мы узнаем больше о создании экземпляров в следующем разделе). Для нашей проверки мы подтверждаем тип переменной, просто печатая ее. Он сообщает нам, что у нас есть экземпляр класса Person в модуле __main__ .

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

Методы

Мы уже обсуждали, что классы / объекты могут иметь методы точно так же, как функции, за исключением того, что у нас есть дополнительная переменная self . Теперь посмотрим на пример (сохраните как oop_method.py ).

  класс Человек:
    def say_hi (сам):
        print ('Привет, как дела?')

p = Человек ()
p.say_hi ()


  

Выход:

  $ python oop_method. py
Привет, как дела?
  

Как это работает

Здесь мы видим self в действии.Обратите внимание, что метод say_hi не принимает параметров, но все еще имеет self в определении функции.

Метод

__init__

Есть много имен методов, которые имеют особое значение в классах Python. Теперь мы увидим значение метода __init__ .

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

Пример (сохранить как oop_init.py ):

  класс Человек:
    def __init __ (я, имя):
        self.name = имя

    def say_hi (сам):
        print ('Здравствуйте, меня зовут', self. name)

p = Человек ('Swaroop')
p.say_hi ()


  

Выход:

  $ python oop_init.py
Привет, меня зовут Сваруп
  

Как это работает

Здесь мы определяем метод __init__ как принимающий параметр name (вместе с обычным self ).Здесь мы просто создаем новое поле, которое также называется name . Обратите внимание, что это две разные переменные, хотя обе они называются «имя». Это не проблема, потому что точечная нотация self.name означает, что есть что-то, называемое «имя», которое является частью объекта с именем «self», а другое имя является локальной переменной. Поскольку мы явно указываем, какое имя имеем в виду, путаницы нет.

При создании нового экземпляра p класса Person мы делаем это, используя имя класса, за которым следуют аргументы в круглых скобках: p = Person (‘Swaroop’).

Мы не вызываем явно метод __init__ . В этом особая важность этого метода.

Теперь мы можем использовать поле self.name в наших методах, что демонстрируется в методе say_hi .

Переменные класса и объекта

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

Есть два типа полей — переменные класса и переменные объекта, которые классифицируются в зависимости от того, владеет ли класс или объект переменными соответственно.

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

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

  класс Робот:
    "" "Представляет робота с именем." ""

    
    население = 0

    def __init __ (я, имя):
        "" "Инициализирует данные."" "
        self.name = имя
        print ("(Инициализация {})". format (self.name))

        
        
        Население роботов + = 1

    def die (self):
        """Я умираю."""
        print ("{} уничтожается!". format (self.name))

        Население роботов - = 1

        если Robot.population == 0:
            print ("{} был последним.". format (self.name))
        еще:
            print ("Есть еще {: d} роботы, работающие.". format (
                Робот. Население))

    def say_hi (сам):
        "" "Приветствие робота. Да, они могут это сделать "" "
        print ("Приветствую, мои мастера называют меня {}.". format (self.name))

    @classmethod
    def how_many (cls):
        "" "Печатает текущее население." ""
        print ("У нас есть {: d} роботов.". format (cls.population))


droid1 = Робот ("R2-D2")
droid1.say_hi ()
Robot.how_many ()

droid2 = Робот ("C-3PO")
droid2.say_hi ()
Robot.how_many ()

print ("\ nРоботы здесь могут поработать. \ n")

print («Роботы завершили свою работу. Давайте уничтожим их».)
droid1.die ()
droid2.die ()

Робот.Как много()
  

Выход:

  $ python oop_objvar.py
(Инициализация R2-D2)
Приветствую, мои мастера зовут меня R2-D2.
У нас есть 1 робот.
(Инициализация C-3PO)
Приветствую, мои хозяева зовут меня С-3ПО.
У нас 2 робота.

Здесь роботы могут поработать.

Роботы завершили свою работу. Так что давайте их уничтожим.
R2-D2 уничтожается!
Еще 1 робот работает.
C-3PO уничтожается!
C-3PO был последним.
У нас 0 роботов.
  

Как это работает

Это длинный пример, но он помогает продемонстрировать природу переменных класса и объекта. Здесь населения принадлежит к классу роботов и, следовательно, является переменной класса. Имя переменная принадлежит объекту (она назначается с помощью self ) и, следовательно, является объектной переменной.

Таким образом, мы называем переменную класса Population как Robot.population , а не как self.population . Мы обращаемся к объектной переменной name , используя нотацию self.name в методах этого объекта.Помните об этой простой разнице между переменными класса и объекта. Также обратите внимание, что объектная переменная с тем же именем, что и переменная класса, скроет переменную класса!

Вместо Robot.population мы могли бы также использовать self .__ class __. Population , потому что каждый объект ссылается на свой класс через атрибут self .__ class__ .

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

Мы отметили метод how_many как метод класса, использующий декоратор.

Декораторы

можно представить как ярлык для вызова функции-оболочки (т. Е. Функции, которая «оборачивает» другую функцию, чтобы она могла что-то делать до или после внутренней функции), поэтому применение декоратора @classmethod — то же самое по телефону:

  how_many = метод класса (how_many)
  

Обратите внимание, что метод __init__ используется для инициализации экземпляра Robot с именем.В этом методе мы увеличиваем количество населения на 1, так как мы добавляем еще одного робота. Также обратите внимание, что значения self. name специфичны для каждого объекта, что указывает на природу переменных объекта.

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

В этой программе мы также видим использование строк документации как для классов, так и для методов.Мы можем получить доступ к строке документации класса во время выполнения, используя Robot .__ doc__ , а строку документации метода — как Robot.say_hi .__ doc__

В методе die мы просто уменьшаем число Robot.population на 1.

Все ученики публичны. Одно исключение: если вы используете элементы данных с именами, использующими префикс двойного подчеркивания , например, __privatevar , Python использует изменение имен, чтобы фактически сделать его частной переменной.

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

Примечание для программистов на C ++ / Java / C #

Все члены класса (включая члены данных) являются общедоступными и все методы виртуальные в Python.

Наследование

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

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

Вы можете создать два независимых класса для каждого типа и обработать их, но добавление новой общей характеристики означало бы добавление к обоим этим независимым классам. Это быстро становится громоздким.

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

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

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

Класс SchoolMember в этой ситуации известен как базовый класс или суперкласс .Классы Teacher и Student называются производными классами или подклассами .

Теперь мы рассмотрим этот пример как программу (сохраните как oop_subclass.py ):

  класс Школа
    '' 'Представляет любого члена школы.' ''
    def __init __ (я, имя, возраст):
        self.name = имя
        self.age = возраст
        print ('(Initialized SchoolMember: {})'. format (self. name))

    def tell (self):
        '' Расскажите мои подробности.'' '
        print ('Имя: "{}" Возраст: "{}"'. format (self.name, self.age), end = "")


Учитель класса (SchoolMember):
    '' 'Представляет учителя.' ''
    def __init __ (я, имя, возраст, зарплата):
        SchoolMember .__ init __ (я, имя, возраст)
        self.salary = зарплата
        print ('(Инициализированный учитель: {})'. format (self.name))

    def tell (self):
        SchoolMember.tell (сам)
        print ('Salary: "{: d}"'. format (self.salary))


ученик класса (SchoolMember):
    '' 'Представляет студента.' ''
    def __init __ (я, имя, возраст, оценки):
        SchoolMember.__init __ (я, имя, возраст)
        self.marks = знаки
        print ('(Инициализированный ученик: {})'. format (self.name))

    def tell (self):
        SchoolMember.tell (сам)
        print ('Marks: "{: d}"'. format (self.marks))

t = Учитель («Миссис Шривидья», 40, 30000)
s = Студент ('Swaroop', 25, 75)


Распечатать()

members = [t, s]
для члена в членах:
    
    member. tell ()
  

Выход:

  $ python oop_subclass.py
(Инициализированный член школы: миссис Шривидья)
(Инициализированный учитель: миссис.Шривидья)
(Инициализированный член школы: Swaroop)
(Инициализированный ученик: Swaroop)

Имя: «Миссис Шривидья» Возраст: «40» Заработная плата: «30000»
Имя: "Swaroop" Возраст: "25" Оценка: "75"
  

Как это работает

Чтобы использовать наследование, мы указываем имена базовых классов в кортеже после имени класса в определении класса (например, class Teacher (SchoolMember) ). Затем мы замечаем, что метод __init__ базового класса явно вызывается с использованием переменной self , чтобы мы могли инициализировать часть базового класса экземпляра в подклассе.Это очень важно помнить. Поскольку мы определяем метод __init__ в подклассах Teacher и Student , Python не вызывает автоматически конструктор базового класса SchoolMember , вы должны явно вызывать его сами.

Напротив, если мы не определили метод __init__ в подклассе, Python автоматически вызовет конструктор базового класса.

В то время как мы могли бы обрабатывать экземпляры Teacher или Student так же, как экземпляр SchoolMember и обращаться к методу tell для SchoolMember , просто набрав Teacher.tell или Student.tell , вместо этого мы определяем другой метод tell в каждом подклассе (используя метод tell класса SchoolMember для его части), чтобы адаптировать его для этого подкласса. Поскольку мы сделали это, когда мы пишем Teacher.tell Python, Python использует метод tell для этого подкласса по сравнению с суперклассом. Однако, если бы у нас не было метода tell в подклассе, Python использовал бы метод tell в суперклассе.Python всегда сначала начинает поиск методов в фактическом типе подкласса, и если он ничего не находит, он начинает поиск методов в базовых классах подкласса, один за другим в том порядке, в котором они указаны в кортеже (здесь у нас есть только 1 базовый класс, но у вас может быть несколько базовых классов) в определении класса.

Примечание по терминологии — если в кортеже наследования указано более одного класса, то это называется множественное наследование .

Параметр конец используется в функции print в методе суперкласса tell () для печати строки и продолжения следующей печати на той же строке.Это уловка, позволяющая заставить print не печатать символ \ n (новая строка) в конце печати.

Сводка

Теперь мы исследовали различные аспекты классов и объектов, а также различные терминологии, связанные с ними. Мы также увидели преимущества и недостатки объектно-ориентированного программирования. Python очень объектно-ориентирован, и тщательное понимание этих концепций очень поможет вам в долгосрочной перспективе.

Далее мы узнаем, как работать с вводом / выводом и как получить доступ к файлам в Python.

.