Работа с классом System.Console

Работа с консолью осуществляется с помощью класса System.Console. Этот класс содержит методы для работы со стандартными потоками ввода, вывода и ошибок. Все члены System.Console являются статическими. Для работы с консолью обычно используется четыре метода: Read, ReadLine, Write и WriteLine.

Метод Read читает символ из потока ввода. Он возвращает значение типа int, равное коду прочитанного символа, либо -1, если символ прочитан не был.

publicstaticintRead();

Метод ReadLine читает из потока ввода строку текста (она завершается символом перевода строки и/или возврата каретки). Метод возвращает объект типа string или возвращает null, если ввод осуществить не удалось.

publicstaticstringReadLine();

Метод Write выводит на экран значение переданной ему переменной. Он определен для всех базовых типов и поддерживает форматированные строки.

public static void Write(базовый-тип);

publicstaticvoidWrite(строка-форматирования, список-переменных);

Таким образом, можно вызвать Write либо с указанным значением в качестве параметра:

int a = 5;

Console.Write(a);

Console.Write(" Строка.");

либо передать строку форматирования и список переменных:

int a = 5;

string str = "Строка";

Console.Write("Целое = {0}, строка = {1}", a, str);

Строка форматированная содержит последовательности символов следующего вида:

{ номер-переменной }

При выводе вместо таких последовательностей символов подставляется значение соответствующей переменной.

Метод WriteLine отличается от Write только тем, что дополняет строку символами возврата каретки и перевода строки.

При передаче любого объекта в качестве параметра в методы Write или WriteLine относительно этого объекта неявно вызывается метод ToString.

Кроме того, класс Console, обладает свойствами, которые позволяют управлять консолью. Некоторые из них:

• BackgroundColor: цвет фона консоли

• ForegroundColor: цвет шрифта консоли

• BufferHeight: высота буфера консоли

• BufferWidth: ширина буфера консоли

• Title: заголовок консоли

• WindowHeight и WindowWidth: высота и ширина консоли соответственно

Пример самостоятельно

35. Что такое инкапсуляция, ее роль, приведите примеры

Инкапсуляция — это механизм программирования, объединяющий вместе код и данные, которыми он манипулирует, исключая как вмешательство извне, так и неправильное использование данных. В объектно-ориентированном языке данные и код могут быть объединены в совершенно автономный черный ящик. Внутри такого ящика находятся все необходимые данные и код. Когда код и данные связываются вместе подобным образом, создается объект. Иными словами, объект — это элемент, поддерживающий инкапсуляцию.

Т.е. инкапсуляция представляет собой способности языка скрывать излишние детали реализации от пользователя объекта. Например, предположим, что используется класс по имени DatabaseReader, который имеет два главных метода: Ореn() и Close().

Фиктивный класс DatabaseReader инкапсулирует внутренние детали нахождения, загрузки, манипуляций и закрытия файла данных. Программистам нравится инкапсуляция, поскольку этот принцип ООП упрощает кодирование. Нет необходимости беспокоиться о многочисленных строках кода, которые работают "за кулисами", чтобы реализовать функционирование класса DatabaseReader. Все, что потребуется — это создать экземпляр и отправлять ему соответствующие сообщения (например, "открыть файл по имени AutoLot.mdf, расположенный на диске С:").

С идеей инкапсуляции программной логики тесно связана идея защиты данных. В идеале данные состояния объекта должны быть специфицированы с использованием ключевого слова private (или, возможно, protected). Таким образом, внешний мир должен вежливо попросить, если захочет изменить или получить лежащее в основе значение. Это хороший принцип, поскольку общедоступные элементы данных можно легко повредить (даже нечаянно, а не преднамеренно).

Основной единицей инкапсуляции в C# является класс, который определяет форму объекта. Он описывает данные, а также код, который будет ими оперировать. В C# описание класса служит для построения объектов, которые являются экземплярами класса. Следовательно, класс, по существу, представляет собой ряд схематических описаний способа построения объекта.

Код и данные, составляющие вместе класс, называют членами. Данные, определяемые классом, называют полями, или переменными экземпляра. А код, оперирующий данными, содержится в функциях-членах, самым типичным представителем которых является метод. В C# метод служит в качестве аналога подпрограммы. (К числу других функций-членов относятся свойства, события и конструкторы.) Таким образом, методы класса содержат код, воздействующий на поля, определяемые этим классом.

Пример самостоятельно

36. Что такое наследование, его роль, приведите примеры

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

Работа с классом System.Console - student2.ru

Т.е. наследование представляет собой процесс, в ходе которого один объект приобретает свойства другого объекта. Это очень важный процесс, поскольку он обеспечивает принцип иерархической классификации. Если вдуматься, то большая часть знаний поддается систематизации благодаря иерархической классификации по нисходящей.

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

Пример самостоятельно.

37. Что такое полиморфизм, его роль, приведите примеры

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

По сути, виртуальный член — это член базового класса, определяющий реализацию по умолчанию, которая может быть изменена (или, говоря более формально, переопределена) в производном классе. В отличие от него, абстрактный метод — это член базового класса, который не предусматривает реализации по умолчанию, а предлагает только сигнатуру. Когда класс наследуется от базового класса, определяющего абстрактный метод, этот метод обязательно должен быть переопределен в производном классе. В любом случае, когда производные классы переопределяют члены, определенные в базовом классе, они по существу переопределяют свою реакцию на один и тот же запрос.

Рассмотрим для примера стек, т.е. область памяти, функционирующую по принципу "последним пришел — первым обслужен". Допустим, что в программе требуются три разных типа стеков: один — для целых значений, другой — для значений с плавающей точкой, третий — для символьных значений. В данном примере алгоритм, реализующий все эти стеки, остается неизменным, несмотря на то, что в них сохраняются разнотипные данные. В языке, не являющемся объектно-ориентированным, для этой цели пришлось бы создать три разных набора стековых подпрограмм с разными именами. Но благодаря полиморфизму для реализации всех трех типов стеков в C# достаточно создать лишь один общий набор подпрограмм. Зная, как пользоваться одним стеком, вы сумеете воспользоваться и остальными.

В более общем смысле понятие полиморфизма нередко выражается следующим образом: "один интерфейс — множество методов". Это означает, что для группы взаимосвязанных действий можно разработать общий интерфейс. Полиморфизм помогает упростить программу, позволяя использовать один и тот же интерфейс для описания общего класса действий. Выбрать конкретное действие (т.е. метод) в каждом отдельном случае — это задача компилятора. Программисту не нужно делать это самому. Ему достаточно запомнить и правильно использовать общий интерфейс.

Наши рекомендации