🗊Презентация Повторное использование кода. Наследование

Нажмите для полного просмотра!
Повторное использование кода. Наследование, слайд №1Повторное использование кода. Наследование, слайд №2Повторное использование кода. Наследование, слайд №3Повторное использование кода. Наследование, слайд №4Повторное использование кода. Наследование, слайд №5Повторное использование кода. Наследование, слайд №6Повторное использование кода. Наследование, слайд №7Повторное использование кода. Наследование, слайд №8Повторное использование кода. Наследование, слайд №9Повторное использование кода. Наследование, слайд №10Повторное использование кода. Наследование, слайд №11Повторное использование кода. Наследование, слайд №12Повторное использование кода. Наследование, слайд №13Повторное использование кода. Наследование, слайд №14Повторное использование кода. Наследование, слайд №15Повторное использование кода. Наследование, слайд №16Повторное использование кода. Наследование, слайд №17Повторное использование кода. Наследование, слайд №18Повторное использование кода. Наследование, слайд №19Повторное использование кода. Наследование, слайд №20Повторное использование кода. Наследование, слайд №21Повторное использование кода. Наследование, слайд №22Повторное использование кода. Наследование, слайд №23

Содержание

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

Слайды и текст этой презентации


Слайд 1





Объектно-Ориентированное Программирование 
Лекция 3
А.М. Задорожный
2016
Описание слайда:
Объектно-Ориентированное Программирование Лекция 3 А.М. Задорожный 2016

Слайд 2





Содержание
Повторное использование кода и Наследование
Статические методы и свойства
Определение операций
Описание слайда:
Содержание Повторное использование кода и Наследование Статические методы и свойства Определение операций

Слайд 3





Контрольные вопросы
Что означают следующие термины:
Класс, объект?
Конструктор?
Поле данных?
Метод?
Квалификатор доступа?
Свойство?
Вычисляемое свойство?
Эластичность кода программы?
Инкапсуляция?
Описание слайда:
Контрольные вопросы Что означают следующие термины: Класс, объект? Конструктор? Поле данных? Метод? Квалификатор доступа? Свойство? Вычисляемое свойство? Эластичность кода программы? Инкапсуляция?

Слайд 4





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

Слайд 5





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

Слайд 6





Наследование
Задача. Добавить в Histogram вычисляемое свойство, для шага гистограммы.
Текста класса Histogram у нас нет!
Вариант 1:
Самим разработать аналогичный класс и добавить в него нужное свойство.

Вариант 2:
Позвонить разработчику Histogram, попросить его прислать код класса и доработать его, добавив нужное свойство.
Описание слайда:
Наследование Задача. Добавить в Histogram вычисляемое свойство, для шага гистограммы. Текста класса Histogram у нас нет! Вариант 1: Самим разработать аналогичный класс и добавить в него нужное свойство. Вариант 2: Позвонить разработчику Histogram, попросить его прислать код класса и доработать его, добавив нужное свойство.

Слайд 7





Наследование
ООП предлагает более эффективный вариант – разработать свой собственный класс на основе Histogram (унаследовав все возможности Histogram).
class ExtendedHist: Histogram
{
	ExtendedHist (string t, double a, double b, int N): base(t,a,b,N)
{
}
}
Это объявление можно (и нужно) понимать так:
Объекты класса ExtendedHist являются и объектами класса Histogram, но с некоторыми расширениями.
Описание слайда:
Наследование ООП предлагает более эффективный вариант – разработать свой собственный класс на основе Histogram (унаследовав все возможности Histogram). class ExtendedHist: Histogram { ExtendedHist (string t, double a, double b, int N): base(t,a,b,N) { } } Это объявление можно (и нужно) понимать так: Объекты класса ExtendedHist являются и объектами класса Histogram, но с некоторыми расширениями.

Слайд 8





Применяем класс-потомок
{
	Random r = new Random();
	ExtendedHist h = new ExtendedHist(“Вес ТС”, 0, 10, 10);
	for(int i = 0; i < 1000; i++)
		h.Hist(10*r.NextDouble());
	h.Write();
	Console.WriteLine(h.MeanValue());
}
Описание слайда:
Применяем класс-потомок { Random r = new Random(); ExtendedHist h = new ExtendedHist(“Вес ТС”, 0, 10, 10); for(int i = 0; i < 1000; i++) h.Hist(10*r.NextDouble()); h.Write(); Console.WriteLine(h.MeanValue()); }

Слайд 9





Расширение класса-предка
class ExtendedHist: Histogram
{
	ExtendedHist (string t, double a, double b, int N): base(t,a,b,N){
}
public double ChannelWidth 
	{get {return (RightEdge - LeftEdge)/NChannels;}}
}

Нужное свойство добавлено!
Наш класс полностью использует код класса-предка, расширяя его лишь небольшой вставкой!
Описание слайда:
Расширение класса-предка class ExtendedHist: Histogram { ExtendedHist (string t, double a, double b, int N): base(t,a,b,N){ } public double ChannelWidth {get {return (RightEdge - LeftEdge)/NChannels;}} } Нужное свойство добавлено! Наш класс полностью использует код класса-предка, расширяя его лишь небольшой вставкой!

Слайд 10





Наследование. Терминология
Класс B, производный от класса A называется классом-наследником, классом-потомком,  дочерним классом или производным классом.
Говорят, что класс B наследует от класса А.
Класс A называется базовым классом, классом-предком или родительским классом для класса B.
По существу же, класс B является и классом A, но с некоторыми расширениями.
Описание слайда:
Наследование. Терминология Класс B, производный от класса A называется классом-наследником, классом-потомком, дочерним классом или производным классом. Говорят, что класс B наследует от класса А. Класс A называется базовым классом, классом-предком или родительским классом для класса B. По существу же, класс B является и классом A, но с некоторыми расширениями.

Слайд 11





Контрольные вопросы
Что означает “Повторное использование кода”?
Что означает “Наследование” в ООП?
Как между собою связаны Наследование и Повторное использование кода?
Как в C# объявить класс B, который является потомком для класса A?
Описание слайда:
Контрольные вопросы Что означает “Повторное использование кода”? Что означает “Наследование” в ООП? Как между собою связаны Наследование и Повторное использование кода? Как в C# объявить класс B, который является потомком для класса A?

Слайд 12





За сценой синтаксиса ООП
Когда мы пишем h.Write(), то метод Write выведет содержимое гистограммы h на консоль. 
Конечно же, он каким-то “таинственным” образом получил данные объекта h.
На самом деле метод Write имеет параметр! Этот параметр имеет тип класса Histogram и имя this. 
Write(Histogram this);
В качестве этого параметра и передается объект, указанный слева от метода (h).
h.Write() эквивалентно Write(h)!

Это относится и ко всем остальным методам. Их первым (скрытым) параметром является параметр с именем this и имеющим тип класса, метод которого рассматривается!
Внутри метода к объекту, для которого вызван метод можно обращаться используя имя this.
Описание слайда:
За сценой синтаксиса ООП Когда мы пишем h.Write(), то метод Write выведет содержимое гистограммы h на консоль. Конечно же, он каким-то “таинственным” образом получил данные объекта h. На самом деле метод Write имеет параметр! Этот параметр имеет тип класса Histogram и имя this. Write(Histogram this); В качестве этого параметра и передается объект, указанный слева от метода (h). h.Write() эквивалентно Write(h)! Это относится и ко всем остальным методам. Их первым (скрытым) параметром является параметр с именем this и имеющим тип класса, метод которого рассматривается! Внутри метода к объекту, для которого вызван метод можно обращаться используя имя this.

Слайд 13





Как выполняется программа?
Выполняемая программа (exe-файл) – это набор данных и команд для компьютера. У каждой программы имеется стандартный заголовок, в котором указано, для какой системы написана программа, некоторая другая важная информация, в том числе адрес точки начала исполнения программы (адрес точки входа).
В C# компилятор в качестве такой точки начала программы (точки входа) указывает адрес метода Main. Этот метод автоматически создается в классе Program, когда создается новый проект.
Следствие. Метод Main должен быть в каждой программе и он должен быть один!
Операционная система:
загружает выполняемую программу в память, 
читает заголовок программы и 
передает управление на точку входа. 
С этого момента начинает работать наша программа.
Описание слайда:
Как выполняется программа? Выполняемая программа (exe-файл) – это набор данных и команд для компьютера. У каждой программы имеется стандартный заголовок, в котором указано, для какой системы написана программа, некоторая другая важная информация, в том числе адрес точки начала исполнения программы (адрес точки входа). В C# компилятор в качестве такой точки начала программы (точки входа) указывает адрес метода Main. Этот метод автоматически создается в классе Program, когда создается новый проект. Следствие. Метод Main должен быть в каждой программе и он должен быть один! Операционная система: загружает выполняемую программу в память, читает заголовок программы и передает управление на точку входа. С этого момента начинает работать наша программа.

Слайд 14





C# полностью ООП язык
В C# все типы данных являются объектами.
int, double, … - это классы наследники от класса Object. 
Если при объявлении класса не указывается класс-предок, то по умолчанию базовым классом будет класс Object.
Такая структура языка программирования приводит к еще одной загадке.
Что бы вызвать метод некоторого класса, нужно:
Создать объект этого класса
И вызвать метод для данного объекта.
Но, создавать объекты можно ТОЛЬКО внутри методов!
Описание слайда:
C# полностью ООП язык В C# все типы данных являются объектами. int, double, … - это классы наследники от класса Object. Если при объявлении класса не указывается класс-предок, то по умолчанию базовым классом будет класс Object. Такая структура языка программирования приводит к еще одной загадке. Что бы вызвать метод некоторого класса, нужно: Создать объект этого класса И вызвать метод для данного объекта. Но, создавать объекты можно ТОЛЬКО внутри методов!

Слайд 15





Как начать выполнение C# программы?
Напоминание. Что бы вызвать метод некоторого класса, нужно:
Создать объект этого класса
И вызвать метод для данного объекта.
Создавать объекты можно ТОЛЬКО внутри методов!
Как же можно вызвать метод Main класса Program? Ведь сначала нужно вызвать какой-то другой метод, который создаст объект класса Program и для него вызвать Main. Но что бы вызвать этот метод опять нужно создать объект…
Замкнутый круг?
Описание слайда:
Как начать выполнение C# программы? Напоминание. Что бы вызвать метод некоторого класса, нужно: Создать объект этого класса И вызвать метод для данного объекта. Создавать объекты можно ТОЛЬКО внутри методов! Как же можно вызвать метод Main класса Program? Ведь сначала нужно вызвать какой-то другой метод, который создаст объект класса Program и для него вызвать Main. Но что бы вызвать этот метод опять нужно создать объект… Замкнутый круг?

Слайд 16





Статические методы
Правило:
Что бы вызвать метод некоторого класса, нужно:
Создать объект этого класса
И вызвать метод для данного объекта.
не совсем точно! 
Некоторые методы можно вызывать без создания объекта!
Console.WriteLine(), Math.Sin(x), …
Здесь слева стоит имя класса, а не имя объекта. Такие методы не имеют скрытого параметра this. (Соответственно, они не получают данных какого либо объекта)
Такие методы называются статическими.
Описание слайда:
Статические методы Правило: Что бы вызвать метод некоторого класса, нужно: Создать объект этого класса И вызвать метод для данного объекта. не совсем точно! Некоторые методы можно вызывать без создания объекта! Console.WriteLine(), Math.Sin(x), … Здесь слева стоит имя класса, а не имя объекта. Такие методы не имеют скрытого параметра this. (Соответственно, они не получают данных какого либо объекта) Такие методы называются статическими.

Слайд 17





Статические методы
Что бы объявить статический метод перед ним нужно указать слово static.
static void Main(string[] args)
Вот как объявлен метод Main в классе Program. 
Так что Main можно вызывать не создавая объекта и парадокса нет!
Статическими объявляют методы, которым не нужно никаких других данных, кроме тех, что поступают через параметры.
Math.Sin(x) – чтобы вычислить синус нужно знать только значение x.
Описание слайда:
Статические методы Что бы объявить статический метод перед ним нужно указать слово static. static void Main(string[] args) Вот как объявлен метод Main в классе Program. Так что Main можно вызывать не создавая объекта и парадокса нет! Статическими объявляют методы, которым не нужно никаких других данных, кроме тех, что поступают через параметры. Math.Sin(x) – чтобы вычислить синус нужно знать только значение x.

Слайд 18





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

Слайд 19





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

Слайд 20





Контрольные вопросы
Каким образом методы получают данные объекта, для которого они вызываются?
Почему метод Main можно вызывать без создания объекта?
Как объявить статический метод?
Как вызвать статический метод?
В каких случаях имеет смысл делать метод статическим?
Что такое “статические данные”?
Описание слайда:
Контрольные вопросы Каким образом методы получают данные объекта, для которого они вызываются? Почему метод Main можно вызывать без создания объекта? Как объявить статический метод? Как вызвать статический метод? В каких случаях имеет смысл делать метод статическим? Что такое “статические данные”?

Слайд 21





Объекты и операции
Что бы сделать использование разработанных классов удобным, в C# существует еще одна полезная возможность – переопределять операции над объектами.
Допустим мы разработали класс матриц, который реализует много полезных методов работы с матрицами. Но как сделать, чтобы сложение матриц было таким, как мы привыкли c=a+b?
class Matrix
{
	…
	static public Matrix operator+ (Matrix a, Matrix b) 
	{
		Matrix c = new Matrix(…)
		for(int i …
			for(int j …
				c[i, j]= a[i, j]+b[i,j];
		return c;
	}
}
Описание слайда:
Объекты и операции Что бы сделать использование разработанных классов удобным, в C# существует еще одна полезная возможность – переопределять операции над объектами. Допустим мы разработали класс матриц, который реализует много полезных методов работы с матрицами. Но как сделать, чтобы сложение матриц было таким, как мы привыкли c=a+b? class Matrix { … static public Matrix operator+ (Matrix a, Matrix b) { Matrix c = new Matrix(…) for(int i … for(int j … c[i, j]= a[i, j]+b[i,j]; return c; } }

Слайд 22





Объекты и операции
Теперь в программах для объектов класса Matrix можно использовать операцию сложения
Matrix c = a + b; // а и b – объекты класса Matrix
Аналогично можно определить и операции умножения, деления матриц и пр.
Тогда программы, работающие с матрицами будут выглядеть привычно. Работать с ними будет проще!
---------
Переопределять можно:
!, ~, ++, --
+, -, *, /, %, &, |, ^, <<, >>
==, !=, <, >, <=, >=
&&, ||
[]
+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
...
Описание слайда:
Объекты и операции Теперь в программах для объектов класса Matrix можно использовать операцию сложения Matrix c = a + b; // а и b – объекты класса Matrix Аналогично можно определить и операции умножения, деления матриц и пр. Тогда программы, работающие с матрицами будут выглядеть привычно. Работать с ними будет проще! --------- Переопределять можно: !, ~, ++, -- +, -, *, /, %, &, |, ^, <<, >> ==, !=, <, >, <=, >= &&, || [] +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= ...

Слайд 23





Контрольные вопросы
Зачем в C# предоставляется возможность переопределять операции над объектами?
Как переопределить ту или иную операцию в C#?
Описание слайда:
Контрольные вопросы Зачем в C# предоставляется возможность переопределять операции над объектами? Как переопределить ту или иную операцию в C#?



Похожие презентации
Mypresentation.ru
Загрузить презентацию