Читайте также:
|
|
или ООП (object-oriented programming) -
методология программирования, основанная на
представлении программы в виде совокупности
объектов, каждый из который является реализацией
определенного типа, использующая механизм
пересылки сообщений и классы, организованные в
иерархию наследования.
ООП характеризуется следующими принципами:
- Все является объектом
- Вычисления осуществляются путем взаимодействия
(обмена данными) между объектами, при котором
один объект требует, чтобы другой объект выполнил
некоторое действие; объекты взаимодействуют,
посылая и получая сообщения; сообщение - запрос на
выполнение действия, дополненный набором
аргументов, которые могут понадобиться при
выполнении действия;
- Каждый объект имеет независимую память, которая
состоит из других объектов;
- Каждый объект является представителем класса,
который выражает общие свойства объектов
данного типа;
- В классе задается функциональность
(поведение объекта); тем самым все объекты, которые
являются экземплярами одного класса, могут
выполнять одни и те же действия;
- Классы организованы в единую древовидную
структуру с общим корнем, называемую иерархией
наследования; память и поведение, связанное с
экземплярами определенного класса, автоматически
доступны любому классу, расположенному ниже в
иерархическом дереве.
Для поддержки принципов
объектно-ориентированного программирования
все ООП-языки, включая C#, имеют 3 характерных
черты: инкапсуляцию, полиморфизм и
наследование.
Наследование (inheritance) - свойство объектов,
посредством которого экземпляры класса получают
доступ к данным и методам классов-предков без их
повторного определения. Наследование позволяет
различным типам данных совместно использовать
один и тот же код, приводя к уменьшению его
размера и повышению функциональности.
6.Понятие класса, объекта. Члены класса – поля и методы. Создание объекта. Область видимости объекта
Класс - шаблон, который определяет форму
объекта. Он задает как данные, так и код,
который оперирует этими данными. C#
использует спецификацию класса для создания
объекта. Объекты - экземпляры класса. Таким
образом, класс - это множество намерений
(планов), определяющих, как должен быть
построен объект. Важно четко понимать
следующее: класс - логическая
абстракция. О ее реализации нет смысла говорить
до тех пор, пока не создан
объект класса, и в памяти не появилось физическое
его представление.
И еще. Вспомните, что методы и переменные,
составляющие класс, называются
членами класса.
Общая форма определения класса
Определяя класс, вы определяете данные, которые
он содержит, и код,
манипулирующий этими данными. Несмотря на то
что очень простые классы могут
включать только код или только данные,
большинство реальных классов содержат и
то, и другое.
Данные содержатся в переменных экземпляров,
определяемых класCOM, а код - в
методах. Однако важно с самого начала отметить,
что класс определяет также ряд
специальных членов данных и методов-членов,
например статические переменные,
константы, конструкторы, деструкторы, индекса
торы, события, операторы и свойства. Пока мы
ограничимся рассмотрением переменных экземпляров
и методов класса, а к концу главы познакомимся с
конструкторами и деструкторами. Остальные
типы членов класса описаны в последующих главах.
Класс создается с помощью ключевого слова class.
Общая форма определения класса,
который содержит только переменные экземпляров и
методы, имеет следующий вид:
class имя_класса
{
Объявление переменных экземпляров.
доступ тип переменная!;
доступ тип переменная2;
...
доступ тип переменная n;
}
Область видимости - часть текста программы,
в которой может быть использован данный объект.
Объект считается видимым в блоке или в исходном
файле, если в этом блоке или файле известны имя и
тип объекта.Объект может быть видимым в пределах
блока, исходного файла или во всех исходных файлах,
образующих программу. Это зависит от того, на каком
уровне объявлен объект: на внутреннем, т.е. внутри
некоторого блока, или на внешнем, т.е. вне всех
блоков. Если объект объявлен внутри блока, то он
видим в этом блоке, и во всех внутренних блоках.
Если объект объявлен на внешнем уровне, то он
видим от точки его объявления до конца данного
исходного файла. Объект может быть сделан глобально
видимым с помощью соответствующих объявлений во
всех исходных файлах, образующих программу.
7.Понятие метода в C#. Формальные и фактические параметры. Способы передачи параметров
Методы - подпрограммы, которые управляют
данными, определенными в классе, и во многих
случаях обеспечивают доступ к данным. Обычно
остальные части программы взаимодействуют с
классом при помощи его методов. Метод содержит
один или несколько операторов. В профессионально
написанном C#- коде каждый метод выполняет только
одну задачу. В качестве имени метода может
использоваться любой действительный модификатор.
Ключевые слова не могут быть именами методов,
имя Main () является зарезервированным для метода,
с которого начинается выполнение программ.
Общий синтаксис метода выглядит так:
access ret-type name (parameter-list)
{
тело метода
}
access - модификатор, который указывает, какие части
вашей программы могут иметь доступ к методу.
ret-type - указывает тип данных, возвращаемых методом.
name - имя метода.
Если метод не возвращает никакого значения,
он должен быть указан как имеющий тип void.
parameter-list (список параметров) - последовательность
разделенных запятыми пар «тип - идентификатор».
С помощью параметров методу передаются из
программы значения, тип которых обязательно должен
быть указан. Параметрами в основном являются
переменные, которые принимают значения аргументов,
передаваемых методу его вызове. Если метод не имеет
параметров, то список параметров будет пустым.
Различают формальные и фактические параметры.
Формальные параметры располагаются в подпрограмме.
Они определяют, как будет происходить обработка
конкретных значений этих параметров. Фактические
параметры указываются при обращении к подпрограмме.
При вызове подпрограммы значения фактических
параметров автоматически передаются в переменные,
являющиеся формальными параметрами. После чего
начинается выполнение подпрограммы.
Общий вид заголовка процедуры:
Procedure <имя> (<список переменных>);
Существует несколько способов передачи параметров
в подпрограмму.
Передача параметров по значению.
Формальному параметру присваивается значение
фактического параметра. В этом случае формальный
параметр будет содержать копию значения,
имеющегося в фактическом, и никакое воздействие,
производимое внутри подпрограммы на формальные
параметры, не отражается на параметрах фактических.
Передача параметров по ссылке.
В формальный параметр может быть помещён сам
фактический параметр (обычно это реализуется
путём помещения в формальный параметр
ссылки на фактический). При этом любое изменение
формального параметра в подпрограмме
отразится на фактическом параметре —
оба параметра во время вызова подпрограммы суть
одно и то же. Параметры, передаваемые по ссылке,
дают возможность не только передавать параметры
внутрь подпрограммы, но и возвращать вычисленные
значения в точку вызова. Для этого параметру
внутри подпрограммы просто присваивается
нужное значение, и после возврата из подпрограммы
переменная, использованная в качестве фактического
параметра, получает это значение.
8.Целые типы данных в C#. Ограничения по значению.
C# определены девять целочисленных типов
данных: char, byte, sbyte, short, ushort, int, uint, long,
ulong. Тип данных char в основном применяется
для представления символов.
Byte 8 От 0 до 255
Sbyte 8 От -121 до 127
Short 16 От -32768 до 32767
Ushort 16 От 0 до 65535
Int 32 От -2147483648 до 2147483647
Uint 32 От 0 до 4294967295
Long 64 От -92233720368554775808 до
Ulong 64 От 0 до 18446774073709551615
В C# определены как знаковые, так и без знаковые
варианты целочисленных типов. Различие между
ними состоит в способе интерпретации старшего
типа целого числа. Если указывается знаковое целое,
то компилятор будет генерировать код, в котором
предполагается интерпретация старшего бита целого
числа как флага знака. Если флаг знака 0, то это
положительное число: если флаг знака 1, то число
отрицательное. Отрицательные числа практически
всегда представлены с использованием метода
двоичного дополнения. В этом методе все биты числа
(за исключением флага знака) инвертируются, затем
к этому числу прибавляется единица, в завершение
флагу знака дается значение 1.
Знаковые целые важны для очень многих алгоритмов,
но они имеют только половину абсолютной величины
соответствующих беззнаковых целых. Например,
запишем в двоичном представлении число типа
short 32767: 01111111 11111111
Поскольку это знаковый тип, при задании старшему
биту значения 1 число будет интерпретировано как -1
(если использовать метод двоичного дополнения). Но
если вы объявляете его тип как ushort, то при задании
старшему биту значения 1 число будет
интерпретировано как 65535. Пожалуй, наиболее часто
используемый целочисленным типом является int.
Переменные типа int часто применяют для управления
циклами, для индексации массивов и в различных
математических вычислениях. При работе с
целочисленными значениями, большими, чем те,
которые могут быть представлены типом int, в C#
используют типы uint, long, ulong, а при работе с
беззнаковым целым - тип uint.
Для больших значений со знаком применяют тип long,
для еще больших положительных чисел
(беззнаковых чисел) - тип ulong.
byte и sbyte - наименьшие целочисленные типы.
Значение типа byte может находиться в диапазоне
от 0 до 255. Переменные типа byte особенно полезны
при использовании необработанных двоичных данных,
таких как поток байтов данных, сгенерированный
каким-либо устройством. Для небольших знаковых
целых применяется тип sbyte.
9.Числа с плавающей точкой в C#. Ограничения по точности.
. Типы данных с плавающей точкой могут
представлять числа, имеющие дробные части.
В C# существует два типа данных с плавающей
точкой, float и double, представляющие числа с
одинарной и двойной точностью соответственно.
Для представления данных типа float выделяются
32 бита, что позволяет присваивать переменные
значения чисел, находящихся в диапазоне от
1,5Е-45 до 3,4Е+38. Для представления данных
типа double выделяются 64 бита, что расширяет
диапазон используемых чисел до величин из
диапазона от 5Е-324 до 1,7Е+308. Чаще всего
применяется тип double. Одна из причин этого
в том, что многие математические функции в
библиотеке классов C#(которой является библиотека
.NET Framework) используют значения, имеющие
тип double. Например, метод Sqrt (), определенный
в стандартном классе System.Matr., возвращает
значение типа double, являющейся квадратным
корнем его аргумента, также имеющего тип double.
Метод Sqrt.() является членом класса Math. Обратите
внимание на способ вызова метода Sqrt. () -
имя метода отделено точкой от имени класса, членом
которого он является. Не все стандартные методы
нужно вызывать, указав вначале имя класса, в котором
определен данный метод, но некоторые методы
требуют именно такого вызова
10.Булевские переменные в C#. Возможные значения. Операции над булевскими переменными. Использование логических выражений.
. Для Булева типа данных, bool, в C# определены
два значения true и false (истина и ложь).
Следовательно, переменная типа bool или
логическое выражение будут иметь одно из этих
двух значений. Более того, не существует способа
преобразования значений типа bool в целочисленные
значения. Например, значение 1 не преобразуется в
значение true, а значение 0 - в значение false.
Особенности использования булевой переменной.
Во-первых, при выводе значения типа bool с помощью
метода WrlteLine () на экран выводится слово true
или false. Во-вторых, используя переменную типа bool
можно управлять оператором if. Если условием
выполнения оператора if является истинность
переменной то нет необходимости записывать
оператора if так: if (b - true) достаточно более короткое
выражение if (b). В-третьих, результатом выполнения
оператора сравнения такого как <, является значение
типа bool. Вот почему выражение 10>9 выводи на
экран значение true. Далее, дополнительная пара скобок,
в которые заключено выражение 10>9, является
необходимой, поскольку оператор + имеет больший
приоритет, чем оператор >.
11.Строковые и символьные переменные в C#. Возможные значения и операции со строковыми и символьными переменными.
Строковые переменные.
Объекты класса String объявляются как все прочие
объекты простых типов - с явной или отложенной
инициализацией, с явным или неявным вызовом
конструктора класса. Чаще всего, при объявлении
строковой переменной конструктор явно
не вызывается, а инициализация задается
строковой константой. Но у класса String
достаточно много конструкторов. Они позволяют
сконструировать строку из:
- символа, повторенного заданное число раз;
- массива символов char [ ];
- части массива символов.
Операции над строками:
- присваивание (=);
- две операции проверки эквивалентности (==) и (!=);
- конкатенация или сцепление строк (+);
- взятие индекса ([ ]).
Символьные переменные.
Значением символьной переменной является один
символ из фиксированного набора. Такой набор
обычно включает буквы, цифры, знаки препинания,
знаки математических операций и различные
специальные символы (процент, амперсенд,
звездочка, косая черта и др.). Подчеркнем, что,
в отличие от строковой переменной, символьная
всегда содержит ровно один символ.
(Строковая содержит строку из нескольких символов.)
Конечно, в памяти компьютера никаких символов
не содержится. Символы представляются их
целочисленными кодами в некоторой фиксированной
кодировке. Кодировка определяется тремя параметрами:
- диапазоном значений кодов
- множеством изображаемых символов
- отображением множества кодов на множество символов.
12.Оператор присваивания. Явное и неявное преобразование типов данных при присваивании в C#.
Оператор присваивания указывается как
одинарный знак равенства (-). В C# он работает
практически также, как в любом другом языке
программирования. Оператор присваивания имеет
следующий синтаксис:
var - expression;
Тип переменной должен быть совместим
с типом выражения.
Оператор присваивания имеет одно интересное
свойство: позволяет создавать «цепочку присваиваний».
Пример:
int x, y, z;
x - y - z - 100;
(переменным x, y, z присваивается значение 100)
Такая последовательность переменных и оператор
допускается, поскольку оператор = присваивает
переменной, находящийся слева него, значение
выражения, находящегося справа. Следовательно,
выражение z =100 будет имеет значение 100, которое
присваивается переменной y, а затем - переменной x.
Используя «цепочку присваиваний», можно одним
значением легко инициализировать группу переменных.
В C# преобразования делятся на неявные и явные.
К неявным относятся те преобразования, результат
выполнения которых всегда успешен и не приводит к
потере точности данных. Неявные преобразования
выполняются автоматически. Для арифметических
данных это означает, что в неявных преобразованиях
диапазон типа назначения содержит в себе диапазон
исходного типа. Например, преобразование из типа
byte в тип int относится к неявным, поскольку
диапазон типа byte является подмножеством
диапазона int. Это преобразование всегда успешно и
не может приводить к потере точности. Заметьте,
преобразования из целочисленных типов к типам с
плавающей точкой относятся к неявным. Хотя здесь
и может происходить некоторое искажение значения,
но точность представления значения сохраняется,
например, при преобразовании из long в double порядок
значения остается неизменным. К явным относятся
разрешенные преобразования, успех выполнения
которых не гарантируется или может приводить к потере
точности. Такие потенциально опасные преобразования
должны быть явно заданы программистом.
Преобразование из типа int в тип byte относится к явным,
поскольку оно небезопасно и может приводить к потере
значащих цифр. Заметьте, не для всех типов существуют
явные преобразования.
13.Арифметические выражения в C#. Целочисленные выражения и выражения с плавающей точкой. Порядок выполнения операций и их результаты.
14.Условные алгоритмы. Условный оператор if в C#. Примеры использования. Условный оператор switch в C#. Примеры использования.
Условный переход можно реализовать в
программе с помощью ключевых слов языка:
if, else или switch. Такой переход возможен только при
условии, если он является истинным.
Дата добавления: 2015-11-16; просмотров: 39 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Объектно-ориентированное программирование | | | if...else оператор |