![](/user_photo/2706_HbeT2.jpg)
- •1.Истроия создания. Стандарт ansi c.
- •2. Структура программы.Алфавит.Осн конструкции языка
- •3. Типы данных.
- •4. Переменные,идентификаторы, константы.. Модуль Math.H
- •7. Директивы препроцессора.
- •1)Передача копии переменной
- •15, Обл.Видимости.Классы памяти
- •16, Строки.Ф-ции раб.Со строками.
- •17. Указатели и ссылки.
- •18. Динамическое выделение памяти. Свободная память.
- •19, Файлы
- •21. Ооп. Механизмы ооп.
- •23. Конструкторы. Деструкт
- •24. Наследование.
- •25. Множественное наследование. Неоднозначности множ наслед-я.
- •26. Полиморфизм. Перегрузка ф-ции.
- •27.Функции-друзья
- •28. Полиморфизм. Перегрузка операторов.
- •29. Перегрузка нек-х спец-х операторов.
- •32. Шаблоны ф-й
- •33. Шаблоны классов
- •34. Шаблоны. Реализация свойств наследования и полиморфизма.
- •35. Обработка исключений
- •41. Компоненты вкладки standard.
- •42. Компоненты вкладки additional
- •43. Компоненты win32.
- •46. Элементы ActiveX.
- •66. Использование встроенного ассемблера
- •59, Свойства с#.
- •51, Основные понятия яз-ка с#.
- •55, Яп с#. Массивы. Конструкция foreach.
- •52. Яп с#. Ветвление. Циклы. Примеры программ.
- •54. Яп с#. Класс, объекты, поля и методы, конструкторы, деструкторы.
- •2)C параметрами:
- •57. Яп с#. Наследование. Абстрактные классы.
- •48. Нормализация таблиц
- •50. Компоненты доступа к бд
- •56. Яп с#. Символы и строки. Класс Random.
- •58. Яп с#. Вложенные, изолированные классы и класс Object.
- •60. Яп с#. Интерфейсы.
- •61. Делегаты,события.
- •62.Создание приложений с графическим интерфейсом.
- •38. Система меню
57. Яп с#. Наследование. Абстрактные классы.
Наследованием наз заимствование полей и методов одного кл, называемого базовым (родителем) другим кл-м, называемым производным (потомком). Насл-е упрощает логику кода, позволяет избежать многих ошибок, позволяет многократно использовать уже написанный код. Насл-е позволяет создавать новые кл, кот-е повторно используют, расширяют и изменяют поведение, определенное в других кл. Производный кл может иметь только один прямой базовый кл. Тем не менее насл-е явл-ся транзитивным. Если ClassC явл-ся производным от ClassB и ClassB явл-ся производным от ClassA, ClassC наследует члены, объявленные в ClassB и ClassA.
Единичное насл-е: class A { //базовый класс int a;
Public A() {...}
public void F() {...} }
class B : A {
// подкласс (наследует св-ва кл A,
// расширяет класс A)
int b;
public B() {...}
public void G() {...} }
Синтаксис насл-я:
class
имя_класса_потомка:имя_базового_класса{ // тело класса }
Насл-е прим-ся для сл-х целей: 1)исключения из программы повторяющихся фрагментов кода; 2)упрощения модификации программы; 3)упрощения создания новых программ на основе существующих.
Отличия насл-я C# от С++:
1) В кач-ве базового кл при наслед-и м б указан только один кл. Это озн-ет, что в C# нет механизма множест-го насл-я. Если же необходимо всё-таки выполнить его то тогда можно воспользоваться понятием интерфейса.
2) При наслед-и не указываются спецификаторы доступа как в C++.
Виды насл-я: 1) насл-е is-a (классическое ) и 2) has-a (включение-делегирование).
Классическое (is-a) насл-е. Закл-ся в след-м: на основе сущ-их кл-в можно создавать новые, более совершенные кл, добавляя новые поля, методы и св-ва.
has-a (включение-делегирование) насл-е. Здесь нет иерархической стр-ры. Суть насл-я закл-ся в том, что один кл поглощает другой. Насл-е такого типа имеет смысл только в сложных кл, в кот-х такое разбиение на части может упростить код. Такое нсл-е - использование одного кл в другом.
Запрет насл-я. Это делается для избегания возможных ошибок. Для запрета насл-я кл достаточно добавить к его описанию слово sealed: public sealed class Worker:
Man{ ... }
Когда кл объявляет базовый тип, он наследует все члены базового класса, за исключением констр-ров. Абстрактный базовый класс Кл м б объявлен абстрактным. Абстрактный кл содержит абстр-е методы, кот-е имеют определение сигнатуры, но не имеют реализации. Создавать абстр-е кл нельзя. Они могут исп-ся только посредством производных кл, реализующих абстр-е методы. И наоборот, запечатанный кл не позволяет др кл-м быть от него производными.
Пр: using System;
Abstract public class Window{
Public Window(int top, int left);{…}
Abstract public
Void Draw Window();…..}
Public class ListBox:Window{
Public ListBox(int top,int left,string cotecst): base(top,left)//вызов кон-ра нашего класса
List Box.Contenst=contenys;}
Public override{
Void Draw Window(){….}…..}
Public class Tester
{static Void main(){
Window[] winArray=new Window[3];
WinArray[0]=new listBox(1.2.”Hello”);
…. For(int i=0, i<0,i++){
Win Array[i]. Draw Window();}}}