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

Нажмите для полного просмотра!
Наследование и полиморфизм. Наследование классов, слайд №1Наследование и полиморфизм. Наследование классов, слайд №2Наследование и полиморфизм. Наследование классов, слайд №3Наследование и полиморфизм. Наследование классов, слайд №4Наследование и полиморфизм. Наследование классов, слайд №5Наследование и полиморфизм. Наследование классов, слайд №6Наследование и полиморфизм. Наследование классов, слайд №7Наследование и полиморфизм. Наследование классов, слайд №8Наследование и полиморфизм. Наследование классов, слайд №9Наследование и полиморфизм. Наследование классов, слайд №10Наследование и полиморфизм. Наследование классов, слайд №11Наследование и полиморфизм. Наследование классов, слайд №12Наследование и полиморфизм. Наследование классов, слайд №13Наследование и полиморфизм. Наследование классов, слайд №14Наследование и полиморфизм. Наследование классов, слайд №15Наследование и полиморфизм. Наследование классов, слайд №16Наследование и полиморфизм. Наследование классов, слайд №17Наследование и полиморфизм. Наследование классов, слайд №18Наследование и полиморфизм. Наследование классов, слайд №19Наследование и полиморфизм. Наследование классов, слайд №20Наследование и полиморфизм. Наследование классов, слайд №21Наследование и полиморфизм. Наследование классов, слайд №22Наследование и полиморфизм. Наследование классов, слайд №23Наследование и полиморфизм. Наследование классов, слайд №24Наследование и полиморфизм. Наследование классов, слайд №25Наследование и полиморфизм. Наследование классов, слайд №26Наследование и полиморфизм. Наследование классов, слайд №27Наследование и полиморфизм. Наследование классов, слайд №28Наследование и полиморфизм. Наследование классов, слайд №29Наследование и полиморфизм. Наследование классов, слайд №30Наследование и полиморфизм. Наследование классов, слайд №31Наследование и полиморфизм. Наследование классов, слайд №32Наследование и полиморфизм. Наследование классов, слайд №33Наследование и полиморфизм. Наследование классов, слайд №34Наследование и полиморфизм. Наследование классов, слайд №35Наследование и полиморфизм. Наследование классов, слайд №36Наследование и полиморфизм. Наследование классов, слайд №37Наследование и полиморфизм. Наследование классов, слайд №38Наследование и полиморфизм. Наследование классов, слайд №39

Содержание

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

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


Слайд 1


Наследование и полиморфизм. Наследование классов, слайд №1
Описание слайда:

Слайд 2


Наследование и полиморфизм. Наследование классов, слайд №2
Описание слайда:

Слайд 3


Наследование и полиморфизм. Наследование классов, слайд №3
Описание слайда:

Слайд 4





1. Иерархия и типы классов.
Описание слайда:
1. Иерархия и типы классов.

Слайд 5





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

Слайд 6


Наследование и полиморфизм. Наследование классов, слайд №6
Описание слайда:

Слайд 7





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

Слайд 8





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

Слайд 9





Корневым классом всех других классов является класс System.Object (синоним object). Это класс реализует наиболее общие для всех классов элементы, например, действия по созданию и удалению объекта. Если производный класс является прямым потомком класса Object указывать родительский класс не надо. 
Корневым классом всех других классов является класс System.Object (синоним object). Это класс реализует наиболее общие для всех классов элементы, например, действия по созданию и удалению объекта. Если производный класс является прямым потомком класса Object указывать родительский класс не надо. 
Например, описание класса следующего вида
public class Auto
{
   public string marka;    //марка автомобиля
   public string nomer;    //номерной знак автомобиля
}
означает, что Auto является наследником класса System.Object.
Описание слайда:
Корневым классом всех других классов является класс System.Object (синоним object). Это класс реализует наиболее общие для всех классов элементы, например, действия по созданию и удалению объекта. Если производный класс является прямым потомком класса Object указывать родительский класс не надо. Корневым классом всех других классов является класс System.Object (синоним object). Это класс реализует наиболее общие для всех классов элементы, например, действия по созданию и удалению объекта. Если производный класс является прямым потомком класса Object указывать родительский класс не надо. Например, описание класса следующего вида public class Auto { public string marka; //марка автомобиля public string nomer; //номерной знак автомобиля } означает, что Auto является наследником класса System.Object.

Слайд 10





При наследовании члены исходного класса передаются потомку. Это позволяет экономно описывать новые классы, добавляя к производному классу новые элементы, не повторяя описание членов исходного класса. 
При наследовании члены исходного класса передаются потомку. Это позволяет экономно описывать новые классы, добавляя к производному классу новые элементы, не повторяя описание членов исходного класса. 
В описании заголовка класса – наследника через двоеточие указывается имя базового класса. Например, создание класса – наследника Bus от класса Auto
public class Bus : Auto
{
  public int KolPas;
  . . .        //описание новых полей, свойств и методов класса Bus
}
При работе только с объектом типа Bus в программе создаются объекты именно этого типа
Bus autobus =new Bus();
autobus.marka=”Volvo”;
autobus.KolPas=86;
Описание слайда:
При наследовании члены исходного класса передаются потомку. Это позволяет экономно описывать новые классы, добавляя к производному классу новые элементы, не повторяя описание членов исходного класса. При наследовании члены исходного класса передаются потомку. Это позволяет экономно описывать новые классы, добавляя к производному классу новые элементы, не повторяя описание членов исходного класса. В описании заголовка класса – наследника через двоеточие указывается имя базового класса. Например, создание класса – наследника Bus от класса Auto public class Bus : Auto { public int KolPas; . . . //описание новых полей, свойств и методов класса Bus } При работе только с объектом типа Bus в программе создаются объекты именно этого типа Bus autobus =new Bus(); autobus.marka=”Volvo”; autobus.KolPas=86;

Слайд 11





Обращение к членам объекта производится так, как будто члены родительского объекта включены в состав порожденного объекта.
Обращение к членам объекта производится так, как будто члены родительского объекта включены в состав порожденного объекта.
От производного класса можно создавать новых наследников, глубина наследования не ограниченна. Количество наследников также не ограничено.
Отношения классов при наследовании можно представить в виде дерева. В этой структуре каждый класс имеет только одного предка и может иметь произвольное количество потомков. Корнем дерева является класс System.Object.
Рассмотренные ранее типы данных, такие как int, double, string, тоже являются классами, программа также объявляется как класс. 
Чем дальше тот или иной класс отстоит в дереве от базового класса,  тем большей специфичностью он обладает.
 
Описание слайда:
Обращение к членам объекта производится так, как будто члены родительского объекта включены в состав порожденного объекта. Обращение к членам объекта производится так, как будто члены родительского объекта включены в состав порожденного объекта. От производного класса можно создавать новых наследников, глубина наследования не ограниченна. Количество наследников также не ограничено. Отношения классов при наследовании можно представить в виде дерева. В этой структуре каждый класс имеет только одного предка и может иметь произвольное количество потомков. Корнем дерева является класс System.Object. Рассмотренные ранее типы данных, такие как int, double, string, тоже являются классами, программа также объявляется как класс. Чем дальше тот или иной класс отстоит в дереве от базового класса, тем большей специфичностью он обладает.  

Слайд 12





Отношение «содержит» существенно отличается от отношения «является», т.е. от прямого наследования. Между объектами могут существовать не только отношения подчиненности, но отношение вхождения. Например, одна и та же марка автомашины выпускаются с различными двигателями, а двигатели могут существовать не только в составе автомобиля. Поэтому двигатель автомашины также следует считать классом
Отношение «содержит» существенно отличается от отношения «является», т.е. от прямого наследования. Между объектами могут существовать не только отношения подчиненности, но отношение вхождения. Например, одна и та же марка автомашины выпускаются с различными двигателями, а двигатели могут существовать не только в составе автомобиля. Поэтому двигатель автомашины также следует считать классом
  public class Dvigatel
        {
            private int power;         //мощность
              . . .                                //описание других свойств и полей 
            public int moshnost
            {
                get { return power; }    //метод чтения поля мощность
                set { power = value; }   //метод занесения значения в поле
            }
     }
Описание слайда:
Отношение «содержит» существенно отличается от отношения «является», т.е. от прямого наследования. Между объектами могут существовать не только отношения подчиненности, но отношение вхождения. Например, одна и та же марка автомашины выпускаются с различными двигателями, а двигатели могут существовать не только в составе автомобиля. Поэтому двигатель автомашины также следует считать классом Отношение «содержит» существенно отличается от отношения «является», т.е. от прямого наследования. Между объектами могут существовать не только отношения подчиненности, но отношение вхождения. Например, одна и та же марка автомашины выпускаются с различными двигателями, а двигатели могут существовать не только в составе автомобиля. Поэтому двигатель автомашины также следует считать классом public class Dvigatel { private int power; //мощность . . . //описание других свойств и полей public int moshnost { get { return power; } //метод чтения поля мощность set { power = value; } //метод занесения значения в поле } }

Слайд 13





Класс Auto должен содержать описание двигателя. Допускается в описание одного класса включать ссылки на другие классы. Следовательно, должно существовать средство описания такой ситуации как «объект1 имеет объект2». Описание класса Auto с подключением класса Dvigatel двигатель 
Класс Auto должен содержать описание двигателя. Допускается в описание одного класса включать ссылки на другие классы. Следовательно, должно существовать средство описания такой ситуации как «объект1 имеет объект2». Описание класса Auto с подключением класса Dvigatel двигатель 
public class Auto
        {
         private string nomer;          //номерной знак автомобиля
            . . .                                //описание других свойств и полей 
         public Dvigatel dvigAuto;  //содержит вложенный объект  
                                                                    //двигатель
       }
Описание слайда:
Класс Auto должен содержать описание двигателя. Допускается в описание одного класса включать ссылки на другие классы. Следовательно, должно существовать средство описания такой ситуации как «объект1 имеет объект2». Описание класса Auto с подключением класса Dvigatel двигатель Класс Auto должен содержать описание двигателя. Допускается в описание одного класса включать ссылки на другие классы. Следовательно, должно существовать средство описания такой ситуации как «объект1 имеет объект2». Описание класса Auto с подключением класса Dvigatel двигатель public class Auto { private string nomer; //номерной знак автомобиля . . . //описание других свойств и полей public Dvigatel dvigAuto; //содержит вложенный объект //двигатель   }

Слайд 14





Создание объекта Auto1:
Создание объекта Auto1:
 //вначале создание объекта двигатель
 Dvigatel motor23 =new Dvigatel (); 
 //установка мощности, рабочего объема двигателя
 motor23.moshnost=120;
 // установка других свойств двигателя
  . . .
 Auto car1 = new Auto();     // создание объекта автомобиль
 car1.dvigAuto = motor23; //установка свойств двигателя для автомобиля
  . . .                                                // установка других свойств автомобиля
Для доступа к полям объекта «двигатель» используют двухступенчатую ссылку, например, 
car1.dvigAuto.moshnost=120;
Возможен и другой подход – на основе делегирования. Делегирование означает включение в класс – контейнер таких членов (свойств, методов), которые будут использовать возможности включенного объекта. Описание этих свойств и методов производится аналогично их описанию для защищенных полей.
Описание слайда:
Создание объекта Auto1: Создание объекта Auto1: //вначале создание объекта двигатель Dvigatel motor23 =new Dvigatel (); //установка мощности, рабочего объема двигателя motor23.moshnost=120; // установка других свойств двигателя . . . Auto car1 = new Auto(); // создание объекта автомобиль car1.dvigAuto = motor23; //установка свойств двигателя для автомобиля . . . // установка других свойств автомобиля Для доступа к полям объекта «двигатель» используют двухступенчатую ссылку, например, car1.dvigAuto.moshnost=120; Возможен и другой подход – на основе делегирования. Делегирование означает включение в класс – контейнер таких членов (свойств, методов), которые будут использовать возможности включенного объекта. Описание этих свойств и методов производится аналогично их описанию для защищенных полей.

Слайд 15





Существует несколько различных типов классов. Эти типы характеризуются независимыми признаками.
Существует несколько различных типов классов. Эти типы характеризуются независимыми признаками.
Статические классы
Иногда целесообразно использовать классы, имеющие только статические члены, которые не применяются для создания объектов (например, класс Console). Если класс определен как статический, то он не допускает создания экземпляров с помощью конструктора. Нарушение этих условий приводит к ошибке компиляции. Описание такого класса содержит ключевое слово static. Статические классы могут обладать статическим конструктором.
Абстрактные классы
Эти классы содержат в своем объявлении слово abstract и включают нереализованные методы. Такие классы должны иметь наследников, в которых эти методы находят воплощение. Абстрактные классы не могут служить источником создания экземпляров.
Описание слайда:
Существует несколько различных типов классов. Эти типы характеризуются независимыми признаками. Существует несколько различных типов классов. Эти типы характеризуются независимыми признаками. Статические классы Иногда целесообразно использовать классы, имеющие только статические члены, которые не применяются для создания объектов (например, класс Console). Если класс определен как статический, то он не допускает создания экземпляров с помощью конструктора. Нарушение этих условий приводит к ошибке компиляции. Описание такого класса содержит ключевое слово static. Статические классы могут обладать статическим конструктором. Абстрактные классы Эти классы содержат в своем объявлении слово abstract и включают нереализованные методы. Такие классы должны иметь наследников, в которых эти методы находят воплощение. Абстрактные классы не могут служить источником создания экземпляров.

Слайд 16





Изолированные классы
Изолированные классы
Иногда необходимо определить класс, который не должен иметь наследников. В описании такого класса добавляют слово sealed (запечатанный)
public sealed class LiAuto : Auto
После такого описания класс LiAuto не может служить базовым для других классов. Это дает защиту от вмешательства потомков в данные класса. Например, нельзя разрешать программисту расширение класса, реализующую  систему безопасности. В противном случае имеется возможность создать черный ход, минующий эту систему.
Описание слайда:
Изолированные классы Изолированные классы Иногда необходимо определить класс, который не должен иметь наследников. В описании такого класса добавляют слово sealed (запечатанный) public sealed class LiAuto : Auto После такого описания класс LiAuto не может служить базовым для других классов. Это дает защиту от вмешательства потомков в данные класса. Например, нельзя разрешать программисту расширение класса, реализующую систему безопасности. В противном случае имеется возможность создать черный ход, минующий эту систему.

Слайд 17





Возможные комбинации модификаторов класса:
Возможные комбинации модификаторов класса:
- модификатор отсутствует или internal. Доступ к классу можно получить только из текущего проекта;
- public. Доступ к классу можно получить из любого места;
- abstract или internal abstract. Доступ к классу можно получить только из текущего проекта. Класс не допускает создание экземпляров;
- public abstract. Доступ к классу можно получить из любого места. Не допускает создание экземпляров;
- sealed или internal sealed. Доступ к классу можно получить только из текущего проекта. Не допускает создание производных классов;
- public sealed. Доступ к классу можно получить из любого места. Не допускает создание производных классов.
Описание слайда:
Возможные комбинации модификаторов класса: Возможные комбинации модификаторов класса: - модификатор отсутствует или internal. Доступ к классу можно получить только из текущего проекта; - public. Доступ к классу можно получить из любого места; - abstract или internal abstract. Доступ к классу можно получить только из текущего проекта. Класс не допускает создание экземпляров; - public abstract. Доступ к классу можно получить из любого места. Не допускает создание экземпляров; - sealed или internal sealed. Доступ к классу можно получить только из текущего проекта. Не допускает создание производных классов; - public sealed. Доступ к классу можно получить из любого места. Не допускает создание производных классов.

Слайд 18





2. Конструкторы и деструкторы
2. Конструкторы и деструкторы
Описание слайда:
2. Конструкторы и деструкторы 2. Конструкторы и деструкторы

Слайд 19





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

Слайд 20





Конструктор вызывают с использованием ключевого слова new. 
Конструктор вызывают с использованием ключевого слова new. 
Например, создать экземпляр класса UchDiszip с применением конструктора по умолчанию можно следующим образом:
UchDiszip ALiP = new UchDiszip ();
Членам – полям объекта конструктор по умолчанию присваивает определенные значения:
- числовым данным – значение 0;
- данным логического типа – false;
- данным ссылочного типа,  в том числе для типа string – null;
- данным типа char – ‘\0’.
Локальным переменным при объявлении следует присваивать значение, так как локальные переменные не получают значение по умолчанию.
Описание слайда:
Конструктор вызывают с использованием ключевого слова new. Конструктор вызывают с использованием ключевого слова new. Например, создать экземпляр класса UchDiszip с применением конструктора по умолчанию можно следующим образом: UchDiszip ALiP = new UchDiszip (); Членам – полям объекта конструктор по умолчанию присваивает определенные значения: - числовым данным – значение 0; - данным логического типа – false; - данным ссылочного типа, в том числе для типа string – null; - данным типа char – ‘\0’. Локальным переменным при объявлении следует присваивать значение, так как локальные переменные не получают значение по умолчанию.

Слайд 21





Результаты работы конструктора по умолчанию при создании объекта не всегда не отвечает потребностям практики. Кончено, после создания объекта можно, обращаясь к свойствам и методам, установить требуемые значения полей. Однако некоторые поля могут быть недоступны, а не установленные программистом требуемые значения какого-либо поля могут привести к трудно обнаруживаемой ошибке времени выполнения.
Результаты работы конструктора по умолчанию при создании объекта не всегда не отвечает потребностям практики. Кончено, после создания объекта можно, обращаясь к свойствам и методам, установить требуемые значения полей. Однако некоторые поля могут быть недоступны, а не установленные программистом требуемые значения какого-либо поля могут привести к трудно обнаруживаемой ошибке времени выполнения.
Преодоление этой проблемы осуществляют, используя конструкторы не по умолчанию. Например, у класса UchDiszip ее может осуществить конструктор не по умолчанию, во время создания экземпляра принимающий параметр для установки – количество учебных часов:
UchDiszip ALiP = new UchDiszip (160);
Описание слайда:
Результаты работы конструктора по умолчанию при создании объекта не всегда не отвечает потребностям практики. Кончено, после создания объекта можно, обращаясь к свойствам и методам, установить требуемые значения полей. Однако некоторые поля могут быть недоступны, а не установленные программистом требуемые значения какого-либо поля могут привести к трудно обнаруживаемой ошибке времени выполнения. Результаты работы конструктора по умолчанию при создании объекта не всегда не отвечает потребностям практики. Кончено, после создания объекта можно, обращаясь к свойствам и методам, установить требуемые значения полей. Однако некоторые поля могут быть недоступны, а не установленные программистом требуемые значения какого-либо поля могут привести к трудно обнаруживаемой ошибке времени выполнения. Преодоление этой проблемы осуществляют, используя конструкторы не по умолчанию. Например, у класса UchDiszip ее может осуществить конструктор не по умолчанию, во время создания экземпляра принимающий параметр для установки – количество учебных часов: UchDiszip ALiP = new UchDiszip (160);

Слайд 22





Конструкторы, подобно полям, свойствам и методам, могут быть общедоступными или приватными. Код, являющийся внешним по отношению к классу, не может создавать экземпляр объекта с помощью приватного конструктора; он должен обязательно использовать общедоступный конструктор. Это позволяет, например, заставить пользователей классов применять конструктор не по умолчанию (объявляя конструктор по умолчанию приватным).
Конструкторы, подобно полям, свойствам и методам, могут быть общедоступными или приватными. Код, являющийся внешним по отношению к классу, не может создавать экземпляр объекта с помощью приватного конструктора; он должен обязательно использовать общедоступный конструктор. Это позволяет, например, заставить пользователей классов применять конструктор не по умолчанию (объявляя конструктор по умолчанию приватным).
Конструктор – это метод, имя которого совпадает с именем класса.
Описание слайда:
Конструкторы, подобно полям, свойствам и методам, могут быть общедоступными или приватными. Код, являющийся внешним по отношению к классу, не может создавать экземпляр объекта с помощью приватного конструктора; он должен обязательно использовать общедоступный конструктор. Это позволяет, например, заставить пользователей классов применять конструктор не по умолчанию (объявляя конструктор по умолчанию приватным). Конструкторы, подобно полям, свойствам и методам, могут быть общедоступными или приватными. Код, являющийся внешним по отношению к классу, не может создавать экземпляр объекта с помощью приватного конструктора; он должен обязательно использовать общедоступный конструктор. Это позволяет, например, заставить пользователей классов применять конструктор не по умолчанию (объявляя конструктор по умолчанию приватным). Конструктор – это метод, имя которого совпадает с именем класса.

Слайд 23





Пусть имеется класс
Пусть имеется класс
public class Kursant
{
  private string Name;
  private string Gruppa;
  private Matricul;
   . . . 
  public Kursant (string Fam, string UchGruppa,int ZachetBook) //конструктор  не по умолчанию
  {									
    Name=Fam;
    Gruppa= UchGruppa;
    Matricul= ZachetBook;
  }
}
Описание слайда:
Пусть имеется класс Пусть имеется класс public class Kursant { private string Name; private string Gruppa; private Matricul; . . . public Kursant (string Fam, string UchGruppa,int ZachetBook) //конструктор не по умолчанию { Name=Fam; Gruppa= UchGruppa; Matricul= ZachetBook; } }

Слайд 24





Создание объекта путем вызова конструктора не по умолчанию
Создание объекта путем вызова конструктора не по умолчанию
Kursant Kur1= new Kursant(“Иванов”,”ПМ27”, 489);
Конструктор не по умолчанию обязательно имеет формальные параметры. Таких конструкторов у класса может быть несколько. Они должны различаться типом или составом параметров. 
При объявлении хотя бы одного конструктора не по умолчанию конструктор по умолчанию становится недоступен. Для того, чтобы он стал доступным, необходимо в описании класса, наряду с другими конструкторами объявить его. Например, для класса Kursant объявление конструктора по умолчанию 
public Kursant()
 {
 }
Конструктор по умолчанию не имеет параметров.
Описание слайда:
Создание объекта путем вызова конструктора не по умолчанию Создание объекта путем вызова конструктора не по умолчанию Kursant Kur1= new Kursant(“Иванов”,”ПМ27”, 489); Конструктор не по умолчанию обязательно имеет формальные параметры. Таких конструкторов у класса может быть несколько. Они должны различаться типом или составом параметров. При объявлении хотя бы одного конструктора не по умолчанию конструктор по умолчанию становится недоступен. Для того, чтобы он стал доступным, необходимо в описании класса, наряду с другими конструкторами объявить его. Например, для класса Kursant объявление конструктора по умолчанию public Kursant() { } Конструктор по умолчанию не имеет параметров.

Слайд 25





Деструкторы
Деструкторы
Деструкторы удаляют объект из памяти, т.е. освобождают занятый участок памяти. Деструктор по умолчанию это делает автоматически. Деструктор по умолчанию вызывается неявно, когда объект выходит за пределы видимости или перед завершением программы. Иногда требуется выполнить специфические действия перед удалением объекта, например, удалить созданные временные файлы. В этом случае необходим деструктор не по умолчанию. Такой деструктор имеет то же имя, что и имя класса, перед которым стоит знак тильды (~)
~Kursant()
{
   . . .//тело деструктора
}
Описание слайда:
Деструкторы Деструкторы Деструкторы удаляют объект из памяти, т.е. освобождают занятый участок памяти. Деструктор по умолчанию это делает автоматически. Деструктор по умолчанию вызывается неявно, когда объект выходит за пределы видимости или перед завершением программы. Иногда требуется выполнить специфические действия перед удалением объекта, например, удалить созданные временные файлы. В этом случае необходим деструктор не по умолчанию. Такой деструктор имеет то же имя, что и имя класса, перед которым стоит знак тильды (~) ~Kursant() { . . .//тело деструктора }

Слайд 26





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

Слайд 27





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

Слайд 28





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

Слайд 29





Если не указано иное, то при создании объекта класса вызывается конструктор по умолчанию. Когда создается подкласс, всякий раз перед этим вызывается конструктор по умолчанию базового класса, тот, в свою очередь, конструктор своего базового класса и т.д. до конструктора класса Object. Другими словами, сначала создается объект класса Object, потом подчиненный ему объект и т.д. Последним создается объект, для которого явно вызван конструктор. Такой порядок вытекает из свойства наследования – каждый класс «отвечает» сам за себя, т.е. подкласс не отвечает за инициализацию базового класса.
Если не указано иное, то при создании объекта класса вызывается конструктор по умолчанию. Когда создается подкласс, всякий раз перед этим вызывается конструктор по умолчанию базового класса, тот, в свою очередь, конструктор своего базового класса и т.д. до конструктора класса Object. Другими словами, сначала создается объект класса Object, потом подчиненный ему объект и т.д. Последним создается объект, для которого явно вызван конструктор. Такой порядок вытекает из свойства наследования – каждый класс «отвечает» сам за себя, т.е. подкласс не отвечает за инициализацию базового класса.
Конструктор подкласса может вызвать определенный конструктор базового класса с использованием ключевого слова base. Пусть базовый класс содержит переопределенный конструктор по умолчанию и конструктор не по умолчанию
Описание слайда:
Если не указано иное, то при создании объекта класса вызывается конструктор по умолчанию. Когда создается подкласс, всякий раз перед этим вызывается конструктор по умолчанию базового класса, тот, в свою очередь, конструктор своего базового класса и т.д. до конструктора класса Object. Другими словами, сначала создается объект класса Object, потом подчиненный ему объект и т.д. Последним создается объект, для которого явно вызван конструктор. Такой порядок вытекает из свойства наследования – каждый класс «отвечает» сам за себя, т.е. подкласс не отвечает за инициализацию базового класса. Если не указано иное, то при создании объекта класса вызывается конструктор по умолчанию. Когда создается подкласс, всякий раз перед этим вызывается конструктор по умолчанию базового класса, тот, в свою очередь, конструктор своего базового класса и т.д. до конструктора класса Object. Другими словами, сначала создается объект класса Object, потом подчиненный ему объект и т.д. Последним создается объект, для которого явно вызван конструктор. Такой порядок вытекает из свойства наследования – каждый класс «отвечает» сам за себя, т.е. подкласс не отвечает за инициализацию базового класса. Конструктор подкласса может вызвать определенный конструктор базового класса с использованием ключевого слова base. Пусть базовый класс содержит переопределенный конструктор по умолчанию и конструктор не по умолчанию

Слайд 30





public class Auto
public class Auto
{
   public Auto()  //конструктор по умолчанию
    {
        .  .  .             //реализация конструктора по умолчанию
    }
   public Auto(string, string)  //конструктор не по умолчанию
    {
        .  .  .             //реализация конструктора не по умолчанию
    }
  .  .  .
}
Описание слайда:
public class Auto public class Auto { public Auto() //конструктор по умолчанию { . . . //реализация конструктора по умолчанию } public Auto(string, string) //конструктор не по умолчанию { . . . //реализация конструктора не по умолчанию } . . . }

Слайд 31





Подкласс 
Подкласс 
public class Bus: Auto
{
   public Bus()  //конструктор по умолчанию
     {
        . . .
     }
   public Bus (string s1, string s2, int i1):base (s1, s2) 
     {                                 //конструктор не по умолчанию
        . . .
     }
   .  .  .
}
Описание слайда:
Подкласс Подкласс public class Bus: Auto { public Bus() //конструктор по умолчанию { . . . } public Bus (string s1, string s2, int i1):base (s1, s2) { //конструктор не по умолчанию . . . } . . . }

Слайд 32





Создание объектов в основной функции с помощью
Создание объектов в основной функции с помощью
//конструктора по умолчанию
Bus Bus1= new Bus();
//конструктора не по умолчанию    
Bus Bus2=new Bus(“Volvo”,”a390oc98”,120);
Описание слайда:
Создание объектов в основной функции с помощью Создание объектов в основной функции с помощью //конструктора по умолчанию Bus Bus1= new Bus(); //конструктора не по умолчанию Bus Bus2=new Bus(“Volvo”,”a390oc98”,120);

Слайд 33





3. Иерархия классов .NET Framework
3. Иерархия классов .NET Framework
Описание слайда:
3. Иерархия классов .NET Framework 3. Иерархия классов .NET Framework

Слайд 34





Программа на языке С# может содержать любое число определенных типов данных. Здесь тип обозначает любой элемент множества, принадлежащего классу, структуре, перечню и т.д. Платформа .NET предоставляет программисту, кроме всего прочего, библиотеку базовых классов – Common Type System (CTS, система общих типов). Спецификации CTS описывают возможные типы данных, допустимые программные конструкции, способы взаимодействия этих компонентов.
Программа на языке С# может содержать любое число определенных типов данных. Здесь тип обозначает любой элемент множества, принадлежащего классу, структуре, перечню и т.д. Платформа .NET предоставляет программисту, кроме всего прочего, библиотеку базовых классов – Common Type System (CTS, система общих типов). Спецификации CTS описывают возможные типы данных, допустимые программные конструкции, способы взаимодействия этих компонентов.
Библиотека CTS обслуживает все языки программирования для платформы .NET. Поэтому не все возможности этой платформы могут быть реализованы в конкретном языке программирования, а названия типов и методов в конкретном языке программирования могут отличаться от установленных в самой платформе. Большинство типов имеют  в своем составе множество членов. Спецификация CTS определяет различные характеристики каждого члена, например, доступность, абстрактность, статичность и др.
Описание слайда:
Программа на языке С# может содержать любое число определенных типов данных. Здесь тип обозначает любой элемент множества, принадлежащего классу, структуре, перечню и т.д. Платформа .NET предоставляет программисту, кроме всего прочего, библиотеку базовых классов – Common Type System (CTS, система общих типов). Спецификации CTS описывают возможные типы данных, допустимые программные конструкции, способы взаимодействия этих компонентов. Программа на языке С# может содержать любое число определенных типов данных. Здесь тип обозначает любой элемент множества, принадлежащего классу, структуре, перечню и т.д. Платформа .NET предоставляет программисту, кроме всего прочего, библиотеку базовых классов – Common Type System (CTS, система общих типов). Спецификации CTS описывают возможные типы данных, допустимые программные конструкции, способы взаимодействия этих компонентов. Библиотека CTS обслуживает все языки программирования для платформы .NET. Поэтому не все возможности этой платформы могут быть реализованы в конкретном языке программирования, а названия типов и методов в конкретном языке программирования могут отличаться от установленных в самой платформе. Большинство типов имеют в своем составе множество членов. Спецификация CTS определяет различные характеристики каждого члена, например, доступность, абстрактность, статичность и др.

Слайд 35





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

Слайд 36





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

Слайд 37


Наследование и полиморфизм. Наследование классов, слайд №37
Описание слайда:

Слайд 38





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

Слайд 39





Вопросы для самоподготовки
Вопросы для самоподготовки
Понятие и виды доступности элементов класса и объекта.
Обращение к методу.
Способы передачи данных в метод и возвращения результатов работы метода.
Обращение к полям и свойствам объекта и класса.
Изучить постановку задачи на практическое занятие.
Описание слайда:
Вопросы для самоподготовки Вопросы для самоподготовки Понятие и виды доступности элементов класса и объекта. Обращение к методу. Способы передачи данных в метод и возвращения результатов работы метода. Обращение к полям и свойствам объекта и класса. Изучить постановку задачи на практическое занятие.



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