Содержание
- 2. § 46. Что такое ООП? Объектно-ориентированное программирование. Языки C++ и C#
- 3. Зачем нужно что-то новое? программы из миллионов строк тысячи переменных и массивов Э. Дейкстра: «Человечество еще
- 4. Как мы воспринимаем объекты? существенные свойства Абстракция – это выделение существенных свойств объекта, отличающих его от
- 5. Использование объектов Программа – множество объектов (моделей), каждый из которых обладает своими свойствами и поведением, но
- 6. § 47. Объекты и классы Объектно-ориентированное программирование. Языки C++ и C#
- 7. С чего начать? Объектно-ориентированный анализ (ООА): выделить объекты определить их существенные свойства описать поведение (команды, которые
- 8. Модель дороги с автомобилями Объект «Дорога»: методы (поведение) свойства (состояние) название класса
- 9. Модель дороги с автомобилями Объект «Машина»: свойства: координаты и скорость все машины одинаковы скорость постоянна на
- 10. Модель дороги с автомобилями Взаимодействие объектов: узнать длину свойства объектов методы: операции, которые они могут выполнять
- 11. § 48. Создание объектов в программе Объектно-ориентированное программирование. Языки C++ и C#
- 12. Классы программа – множество взаимодействующих объектов любой объект – экземпляр какого-то класса класс – описание группы
- 13. Класс «Дорога» class TRoad { float Length; int Width; }; Объявление класса: Объявление переменной (создание объекта):
- 14. Класс «Дорога» class TRoad { public: float Length; int Width; }; Объявление класса: main() { TRoad
- 15. Класс «Дорога» Конструктор – это метод класса, который вызывается для создания объекта этого класса. TRoad road;
- 16. Новый конструктор class TRoad { public: float Length; int Width; TRoad(); // объявление конструктора }; Класс:
- 17. Конструктор с параметрами class TRoad { public: ... TRoad ( float length0, int width0 ); };
- 18. Защита от неверных данных TRoad::TRoad ( float length0, int width0 ) { if ( length0 >
- 19. Значения параметров по умолчанию class TRoad { public: ... TRoad ( float length0, int width0 =
- 20. Класс «Машина» class TCar { public: float X, V; int P; TRoad *Road; void move(); TCar
- 21. Конструкторы класса «Машина» TCar::TCar () { Road = NULL; P = 0; V = 0; X
- 22. Класс «Машина»: метод move void TCar::move() { X = X + V; if ( X >
- 23. Основная программа const int N = 3; TCar cars[N]; int i; for ( i = 0;
- 24. Использование указателей const int N = 3; TCar *cars[N]; for ( i = 0; i cars[i]
- 25. Что в этом хорошего и плохого? основная программа – простая и понятная классы могут разрабатывать разные
- 26. § 49. Скрытие внутреннего устройства Объектно-ориентированное программирование. Языки C++ и C#
- 27. Зачем скрывать внутреннее устройство? Объектная модель задачи: интерфейсы защита внутренних данных проверка входных данных на корректность
- 28. class TPen { private: string FColor; public: string getColor (); void setColor ( string newColor );
- 29. Пример: класс «перо» Получить значение: string TPen::getColor () { return FColor; } Записать значение: void TPen::setColor
- 30. Пример: класс «перо» Использование: TPen pen; pen.setColor ( "FFFF00" ); cout установить цвет прочитать цвет pen.color
- 31. Изменение внутреннего устройства class TPen { private: int FColor; public: string getColor(); void setColor( string newColor
- 32. Преобразования int → hex #include Использование потока (байтов): записываем в поток число в шестнадцатеричной системе читаем
- 33. string TPen::getColor() { stringstream s; s return s.str(); } Преобразования hex ↔ int #include #include подключить
- 34. Преобразования hex → int void TPen::setColor ( string newColor ) { stringstream s; if ( newColor.length()!=
- 35. Свойства в C# Свойство – это способ доступа к внутреннему состоянию объекта, имитирующий обращение к его
- 36. Свойства в C# class TPen { private string FColor; public string color { get { return
- 37. Свойства в C# Защита от неверного ввода данных: public string color { get { return FColor;
- 38. Свойства в C# Изменение внутреннего устройства: class TPen { private int FColor; public string color {
- 39. Свойство «только для чтения» class TCar { private: double Fv; public: double getV() { return Fv;
- 40. Скрытие внутреннего устройства Инкапсуляция («помещение в капсулу») интерфейс (public) внутреннее устройство (private)
- 41. § 50. Иерархия классов Объектно-ориентированное программирование. Языки C++ и C#
- 42. Классификации Классификация – разделение изучаемых объектов на группы (классы), объединенные общими признаками. Яблоко Груша Банан Апельсин
- 43. Что такое наследование? класс Двудольные семейство Бобовые род Клевер горный клевер наследует свойства (имеет все свойства)
- 44. Иерархия логических элементов Логический элемент с одним входом с двумя входами НЕ Объектно-ориентированное программирование – это
- 45. Базовый класс class TLogElement { public: bool In1, In2, Res; void calc(); }; можно моделировать элементы
- 46. Базовый класс class TLogElement { private: bool FIn1, Fin2, FRes; void calc(); public: bool getIn1() {
- 47. Установка входа void TLogElement::setIn1(bool newIn1) { FIn1 = newIn1; calc(); } пересчёт при изменении входа void
- 48. Что такое полиморфизм? греч.: πολυ — много, μορφη — форма Полиморфизм – это возможность классов-наследников по-разному
- 49. Базовый класс class TLogElement { private: bool FIn1, Fin2; protected: bool FRes; virtual void calc()= 0;
- 50. Базовый класс class TLogElement { protected: bool FRes; virtual void calc()= 0; bool getIn2() { return
- 51. Абстрактный класс Абстрактный метод – это метод класса, который объявляется, но не реализуется в классе. Абстрактный
- 52. Элемент «НЕ» class TNot: public TLogElement { protected: void calc(); }; void TNot::calc() { FRes =!getIn1();
- 53. Элемент «НЕ» TNot n; n.setIn1 ( false ); cout Использование: создание объекта установка входа вывод результата
- 54. Элементы с двумя входами class TLog2In: public TLogElement { public: TLogElement::setIn2; TLogElement::getIn2; }; наследник от TLogElement
- 55. Элементы с двумя входами class TAnd: public TLog2In { protected: void calc(); }; class TOr: public
- 56. Элементы с двумя входами void TAnd::calc() { FRes = getIn1() && getIn2(); } void TAnd::calc() {
- 57. Вызов виртуального метода void TLogElement::setIn1( bool newIn1 ) { FIn1 = newIn1; calc(); } В базовом
- 58. Виртуальный метод Виртуальный метод – это метод базового класса, который могут переопределить классы-наследники так, что конкретный
- 59. Пример: элемент «И-НЕ» main() { TNot elNot; TAnd elAnd; int A, B; cout cout for (
- 60. Модульность class TLogElement { … } class TLog2In: public TLogElement { … } class TNot: public
- 61. Модульность void TLogElement::setIn1 ( bool newIn1 ) { ... } void TLogElement::setIn2 ( bool newIn1 )
- 62. Сообщения между объектами class TLogElement { private: TLogElement *FNextEl; int FNextIn; ... public: void Link (
- 63. Сообщения между объектами void TLogElement::Link( TLogElement *nextElement, int nextIn ) { FNextEl = nextElement; FNextIn =
- 64. Сообщения между объектами void TLogElement::setIn1 ( bool newIn1 ) { FIn1 = newIn1; calc(); if (
- 65. Сообщения между объектами TLogElement::TLogElement() { FNextEl = NULL; } Новый конструктор:
- 66. Сообщения между объектами TNot elNot; TAnd elAnd; elAnd.Link ( &elNot ); ... for ( A =
- 67. § 51. Программы с графическим интерфейсом Объектно-ориентированное программирование. Языки C++ и C#
- 68. Интерфейс: объекты и сообщения поле ввода кнопка флажок переключатель Все элементы окон – объекты, которые обмениваются
- 69. Классические программы основная программа
- 70. Программы, управляемые событиями Событие – это переход какого-либо объекта из одного состояния в другое. нажатие на
- 71. Программы, управляемые событиями основная программа
- 72. Что такое RAD-среда? RAD = Rapid Application Development — быстрая разработка приложений создание формы минимальный код
- 73. RAD-среды: Delphi Язык: Object Pascal, позднее Delphi: 1995: Borland, сейчас: Embarcadero Technologies
- 74. RAD-среды: MS Visual Studio Языки: Visual Basic, Visual C++, Visual C#, Visual F# c 1995 по
- 75. RAD-среды: Lazarus Языки: FreePascal, Delphi свободное ПО: lazarus.freepascal.org
- 76. § 52. Программирование в RAD-средах Объектно-ориентированное программирование. Языки C++ и C#
- 77. Visual Studio Express (C#) http://www.visualstudio.com/ru-ru/products/visual-studio-express-vs.aspx
- 78. Язык C# С → С++ → C# язык CIL (байт-код) Common Intermediate Language виртуальная машина CLR
- 79. Form1.resx Проект – это набор файлов, из которых компилятор строит исполняемый файл программы. проект (.csproj, CSharp
- 80. Простейший проект Файл – Создать проект – Приложение Windows Forms Свойства Панель элементов Редактор кода Конструктор
- 81. Модуль формы F7 – перейти из конструктора к коду формы using System; using System.Collections.Generic; using System.ComponentModel;
- 82. Модуль формы public partial class Form1: Form { public Form1() { InitializeComponent(); } } открытый класс
- 83. Основная программа using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace Project1 { static class Program
- 84. Свойства формы Name – имя формы Size.Width – ширина Size.Height – высота Text – текст в
- 85. Обработчик событий 2×ЛКМ: создать обработчик FormClosing: форма закрывается События
- 86. Обработчик события private void MainForm_FormClosing ( object sender, FormClosingEventArgs e ) { } закрытый метод класса
- 87. private void MainForm_FormClosing ( object sender, FormClosingEventArgs e) { DialogResult res; res = MessageBox.Show ( "Вы
- 88. Параметры MessageBox.Show сообщение пользователю заголовок окна тип запроса MessageBoxIcon Error ошибка Warning предупреждение Information информация Question
- 89. § 53. Использование компонентов Объектно-ориентированное программирование. Языки C++ и C#
- 90. Панель компонентов Стандартные Контейнеры Диалоги
- 91. Просмотр рисунков панель Panel выключатель CheckBox рисунок PictureBox кнопка Button
- 92. Настройка формы Файл – Создать проект – Приложение Windows Forms Name → MainForm Text → Просмотр
- 93. Верхняя панель панель Panel Dock = Top
- 94. Кнопка и выключатель кнопка Button выключатель CheckBox Name = OpenBtn Text = Открыть файл Name =
- 95. Компонент PictureBox рисунок PictureBox Name = Image Dock = Fill
- 96. Выбор файла Name = OpenDlg выбор рисунка OpenFileDialog
- 97. Выбор файла if ( OpenDlg.ShowDialog() == DialogResult.OK ) Img.Image = new Bitmap (OpenDlg.FileName); если файл выбран
- 98. Масштабирование 2×ЛКМ if ( SizeCB.Checked ) Img.SizeMode = PictureBoxSizeMode.Zoom; else Img.SizeMode = PictureBoxSizeMode.Normal;
- 99. Ввод и вывод данных для веб-страниц метка rgbLabel Label панель rgbPanel Panel поле ввода rEdit TextBox
- 100. Обновление компонентов вывода выделить все три (+Shift) 2×ЛКМ
- 101. Обновление компонентов вывода private void rEdit_TextChanged ( object sender, EventArgs e ) { int r, g,
- 102. Вызов при запуске private void MainForm_Load ( object sender, EventArgs e ) { rEdit_TextChanged ( rEdit,
- 103. Обработка ошибок
- 104. Обработка ошибок try { // «опасные» команды } catch { // обработка ошибки } попытаться выполнить
- 105. Обработка ошибок try { r = Int32.Parse ( rEdit.Text ); g = Int32.Parse ( gEdit.Text );
- 106. Блокирование неверных символов private void rEdit_KeyPress ( object sender, KeyPressEventArgs e ) { if ( !
- 107. § 54. Совершенствование компонентов Объектно-ориентированное программирование. Языки C++ и C#
- 108. Новый класс (модуль) Задача: построить поле для ввода целых чисел, в котором есть защита от ввода
- 109. Обработчик KeyPress class IntTextBox: TextBox { protected override void OnKeyPress ( KeyPressEventArgs e ) { if
- 110. Свойство Value class IntTextBox: TextBox { ... public int Value { set { Text = value.ToString();
- 111. Поле для ввода целых чисел private void decEdit_TextChanged ( object sender, EventArgs e ) { hexLabel.Text
- 112. § 55. Модель и представление Объектно-ориентированное программирование. Языки C++ и C#
- 113. решение Еще одна декомпозиция Задача: повторное использование написанного ранее готового кода. решение
- 114. решение Модель и представление Задача: хранить и использовать данные об изменении курса доллара.
- 115. Модель и представление Задача: вычисление арифметического выражения: целые числа знаки арифметических действий + - * /
- 116. Модель k = номер последней операции if ( k результат:= строка в число else { n1
- 117. Статический класс – набор функций static class Calculator { static int Priority ( char op )
- 118. Модель: приоритет операций int Priority ( char op ) { switch ( op ) { case
- 119. Модель: номер последней операции int LastOp ( string s ) { int i, minPrt, res; minPrt
- 120. Модель: вычисления public static int Calc(string s) { int k, n1, n2, res = 0; k
- 121. Представление многострочное поле TextBox выпадающий список ComboBox Name = Answers Dock = Fill ReadOnly = True
- 122. Перехват нажатия на клавишу Enter private void Input_KeyPress ( object sender, KeyPressEventArgs e ) { if
- 123. Обработка и вывод данных int x; x = Calculator.Calc( Input.Text); Вычисления (обращение к модели): Answers.Text +=
- 124. Обработка и вывод данных int i = Input.FindString(Input.Text); if ( i Input.Items .Insert ( 0, Input.Text
- 125. Перехват нажатия на клавишу Enter private void Input_KeyPress ( object sender, KeyPressEventArgs e ) { if
- 126. Калькулятор
- 127. Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ № 163, г. Санкт-Петербург kpolyakov@mail.ru ЕРЕМИН
- 129. Скачать презентацию