Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемВалентина Степунина
1 Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук Курак Михаил Валерьянович
2 2 Методы Метод определяет некоторую процедуру обработки данных. Выполнение программы можно рассматривать как взаимодействие методов с точки зрения: управления (вызов/возврат) обмен данными ТипВозвращаемогоОбъекта Имя (параметры) { процедура } Определение метода может быть выполнено только в составе класса public private protected static void если отсутствует
3 3 Взаимодействие по управлению Вызов Возврат Класс1 + Метод1() + Метод2() + Метод3() + Метод4() Класс2 + Метод1() - Метод2() + Метод3() Объект.Метод1() Класс 2.Метод3() Метод4()
4 4 Взаимодействие по данным Общие поля класса Параметры метода Возврат данных из метода ТипВозврата Имя (тип имя, out тип имя, ref тип имя) { return объект; } Приемник = Имя (аргумент, out аргумент ref аргумент ); константапеременная
5 5 Конструкторы и свойства Конструктор - специфический метод класса. Специфика заключается: в назначении – конструктор автоматически вызывается при создании объекта и в силу этого используется для инициализации полей объекта в синтаксисе – конструктор должен иметь имя, совпадающее с именем класса, конструктор не может иметь возвращаемого значения.
6 6 Конструкторы и свойства Конструктор - специфический метод класса. Специфика заключается: в назначении – конструктор автоматически вызывается при создании объекта и в силу этого используется для инициализации полей объекта в синтаксисе – конструктор должен иметь имя, совпадающее с именем класса, конструктор не может иметь возвращаемого значения. Свойство - специфический метод. Специфика заключается: в назначении – доступ к закрытым полям объекта или класса в синтаксисе наличие специальных блоков get, set вызов в форме, аналогичной обращению к полю
7 7 Конструкторы и свойства Конструктор - специфический метод класса. Специфика заключается: в назначении – конструктор автоматически вызывается при создании объекта и в силу этого используется для инициализации полей объекта в синтаксисе – конструктор должен иметь имя, совпадающее с именем класса, конструктор не может иметь возвращаемого значения. Свойство - специфический метод. Специфика заключается: в назначении – доступ к закрытым полям объекта или класса в синтаксисе наличие специальных блоков get, set вызов в форме, аналогичной обращению к полю public ТипВозвращаемогоОбъекта Имя свойства { set { код для установки поля } //неявный параметр (value) get {код для чтения поля} }
8 8 Пример использования свойств
9 9 class Автомобиль { protected string номер; public Автомобиль(string номер) { this.номер = номер; } public string Номер { set { номер = value; } get { return номер; } }
10 10 Пример использования свойств class Автомобиль { protected string номер; public Автомобиль(string номер) { this.номер = номер; } public string Номер { set { номер = value; } get { return номер; } } Маршрутка восточный; восточный = new Маршрутка("A222AA-77", 10); Маршрутка.Тариф = 10.0; восточный.Номер = "В111ВВ-77";
11 11 public string Номер { set { номер = value; } } Объект.Номер = Ого; public void Номер() { this.номер = номер; } объект.Номер(Ого);
12 12 Пример использования свойств class Автомобиль { protected string номер; public Автомобиль(string номер) { this.номер = номер; } public string Номер { set { номер = value; } get { return номер; } } class Маршрутка:Автомобиль { private static double тариф=1.0; private int перевезеноПассажиров; public Маршрутка(string номер, int перевезеноПассажиров): base(номер) { this.перевезеноПассажиров = перевезеноПассажиров; } public static double Тариф { set { тариф = value; } get { return тариф;} }
13 13 Пример использования свойств class Автомобиль { protected string номер; public Автомобиль(string номер) { this.номер = номер; } public string Номер { set { номер = value; } get { return номер; } } class Маршрутка:Автомобиль { private static double тариф=1.0; private int перевезеноПассажиров; public Маршрутка(string номер, int перевезеноПассажиров): base(номер) { this.перевезеноПассажиров = перевезеноПассажиров; } public static double Тариф { set { тариф = value; } get { return тариф;} } Маршрутка восточный; восточный = new Маршрутка("A222AA-77", 10); Маршрутка.Тариф = 10.0; восточный.Номер = "В111ВВ-77";
14 14 Полиморфизм Перегрузка методов Перегрузка операций Переопределение методов
15 15 Перегрузка методов Сигнатура метода: Имя Количество параметров Типы параметров и их модификаторы
16 16 Перегрузка методов Сигнатура метода: Имя Количество параметров Типы параметров и их модификаторы class Сложение { public double Sum(int x, int y) { return (double)(x + y); } }
17 17 Перегрузка методов Сигнатура метода: Имя Количество параметров Типы параметров и их модификаторы class Сложение { public double Sum(int x, int y) { return (double)(x + y); } public double Sum(float x, float y) { return (double)(x + y); } }
18 18 Перегрузка методов Сигнатура метода: Имя Количество параметров Типы параметров и их модификаторы class Сложение { public double Sum(int x, int y) { return (double)(x + y); } public double Sum(float x, float y) { return (double)(x + y); } public string Sum(string x, string y) { return x + y; } }
19 19 Перегрузка методов class Сложение { public double Sum(int x, int y) { return (double)(x + y); } public double Sum(float x, float y) { return (double)(x + y); } public string Sum(string x, string y) { return x + y; } } static void Main(string[] args) { Сложение сложение = new Сложение(); сложение.Sum("ВАСЯ","ИВАНОВ"); }
20 20 Перегрузка методов class Сложение { public double Sum(int x, int y) { return (double)(x + y); } public double Sum(float x, float y) { return (double)(x + y); } public string Sum(string x, string y) { return x + y; } } static void Main(string[] args) { Сложение сложение = new Сложение(); сложение.Sum("ВАСЯ","ИВАНОВ"); сложение.Sum(5, 12.5); }
21 21 Перегрузка методов class Сложение { public double Sum(int x, int y) { return (double)(x + y); } public double Sum(float x, float y) { return (double)(x + y); } public string Sum(string x, string y) { return x + y; } } static void Main(string[] args) { Сложение сложение = new Сложение(); сложение.Sum("ВАСЯ","ИВАНОВ"); сложение.Sum(5, 12.5); сложение.Sum(5, 5.0F); }
22 22 Полиморфизм Перегрузка методов Перегрузка операций Переопределение методов
23 23 Переопределение методов virtual new override
24 24 Переопределение методов virtual new override class Класс2:Класс1 { public new void Метод() { Console.Write("ВАСИЛЬЕВ"); } } class Класс1 { public virtual void Метод() { Console.Write("АНДРЕЕВ"); } } Класс2 объект2 = new Класс2(); объект2.Метод(); // ВАСИЛЬЕВ
25 25 Переопределение методов virtual new override class Класс1 { public virtual void Метод() { Console.Write("АНДРЕЕВ"); } } Класс3 объект3 = new Класс3(); объект3.Метод(); // СИДОРОВ class Класс3 : Класс1 { public override void Метод() { Console.Write("СИДОРОВ"); } }
26 26 Переопределение методов virtual new override class Класс2:Класс1 { public new void Метод() { Console.Write("ВАСИЛЬЕВ"); } } class Класс1 { public virtual void Метод() { Console.Write("АНДРЕЕВ"); } } Класс1 ссылка = new Класс2(); ссылка.Метод(); //АНДРЕЕВ
27 27 Переопределение методов virtual new override class Класс1 { public virtual void Метод() { Console.Write("АНДРЕЕВ"); } } Класс1 ссылка = new Класс3(); ссылка.Метод(); //СИДОРОВ class Класс3 : Класс1 { public override void Метод() { Console.Write("СИДОРОВ"); } }
28 28 Структура предметной области
29 29 Определения классов class Товар { public virtual void Цена() { Console.Write("Не знаю"); } } class СоШтрихКодом:Товар { public new void Цена() { Console.Write("Цена по штрих-коду"); } } class СЦенником : Товар { public new void Цена() { Console.Write("Цена по ценнику"); } } class БезЦенника : Товар { public new void Цена() { Console.Write("Цена от товароведа"); } }
30 30 Массив объектов new СоШтрихКодом() new СЦенником() new БезЦенника() Массив A типа Object A[0] is СоШтрихКодом -> true A[0].GetType().Name -> СоШтрихКодом
31 31 Определения классов class Товар { public virtual void Цена() { Console.Write("Не знаю"); } } class СоШтрихКодом:Товар { public override void Цена(){Console.Write("Цена по штрих-коду"); } } class СЦенником : Товар { public override void Цена() { Console.Write("Цена по ценнику"); } } class БезЦенника : Товар { public override void Цена(){Console.Write("Цена от товароведа"); } }
32 32 Массив объектов new СоШтрихКодом() new СЦенником() new БезЦенника() Массив A типа Товар A[0].Цена() -> Цена по штрих-коду
33 33 Переопределение методов
34 34 Абстрактный класс abstract class Товар { public abstract void Цена(); }
35 35 Интерфейс
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.