Читаем C#. Объектно ориентированное программирование полностью

синтаксиса. Это классика жанра — для ссылки на поле name объекта cat мы указываем имя объекта и, через точку, имя поля. Присваиваемое полю

значение указано справа от оператора присваивания. По-другому мы по-

ступаем с объектом dog. Для этого командой dog.SetName("Шарик") из объ-

екта dog вызывается метод SetName() с текстовым аргументом, который

присваивается полю name этого объекта. Здесь мы также имеем дело с то-

чечным синтаксисом.

ПРИМЕЧАНИЕ Обратите внимание на то, что в соответствии с кодом метода SetName()  в  консоль  выводится  сообщение  о  присвоении  значения

полю name.

Кульминацией программы являются команды cat.ShowName() и dog.Show­

Name(), которыми в консоль выводятся сообщения о значении полей name соответствующих объектов.

Напоминаем, что команда Console.ReadLine() нужна исключительно

для  того,  чтобы  окно  консоли  не  закрылось  сразу  по  выполнении

предыдущих инструкций.

Результат выполнения программы представлен на рис. 2.1, где показано

консольное окно с сообщениями, которые увидит пользователь.

Это общая схема создания и использования объектов и объектных пере-

менных. Теперь мы будем постепенно усовершенствовать методы работы

с объектами.

60

Глава 2. Классы и объекты

Рис. 2.1.  Результат выполнения программы, в которой использованы объекты

Перегрузка методов

Нет, такой хоккей нам не нужен!

Н. Озеров

Перегрузка методов — весьма полезный и перспективный механизм, ко-

торый позволяет создавать очень гибкие и эффективные методы. В общих

чертах суть перегрузки методов состоит в том, что в классе можно создавать

(описывать) несколько вариантов одного и того же метода. «Несколько ва-

риантов» в данном случае означает, что все эти методы имеют одинаковые

названия, но при этом различаются количеством и (или) типом аргументов.

ПРИМЕЧАНИЕ Процедура перегрузки методов есть не только в C#, но и в C++ и Java.

Во всех случаях общий подход универсален — у перегружаемых ме-

тодов одинаковые названия, но при этом разные варианты методов

должны быть различимы. В принципе идентификацию того или иного

варианта метода (поскольку у всех у них одинаковые названия) мож-

но выполнять на основе списка аргументов и (или) типа результата.

В  C#  такая  идентификация  выполняется  только  на  основе  списка

аргументов метода. У разных версий перегружаемого метода должно

быть  разное  количество  аргументов  или  аргументы  должны  быть

разного типа. Обычно правильная фраза звучит так: «при перегрузке

метода неизменно название, но разная сигнатура». Под сигнатурой

в C# подразумевают имя метода и список его аргументов. Обратите

внимание: тип результата в понятие «сигнатура» не входит!

Реализуется перегрузка метода достаточно просто. Каждый вариант мето-

да описывается как отдельный метод. Важно только помнить, что разные

варианты должны быть различимы на уровне аргументов. Ведь количество

и тип переданных методу аргументов являются индикаторами того, какой

вариант метода необходимо вызывать в том или ином случае. Проиллю-

стрируем это на конкретном примере. Обратимся к программному коду, представленному в листинге 2.3.

Перегрузка методов           61

Листинг 2.3.  Перегрузка методов

using System;

class Person{

// Закрытое числовое поле:

int age;

// Закрытое текстовое поле:

string name;

// Открытый метод для отображения полей:

public void show(){

Console.WriteLine("Имя: "+name);

Console.WriteLine("Возраст: "+age);

}

// Открытый перегруженный метод для

// присваивания значения полям.

// Версия перегруженного метода

// с двумя аргументами:

public void set(int n,string arg){

age=n;

name=arg;

}

// Версия метода без аргументов:

public void set(){

age=0;

name="Нет имени";

}

// Версия метода с одним числовым аргументом:

public void set(int n){

// Вызывается версия метода с двумя аргументами:

set(n,"Нет имени");

}

// Версия метода с одним текстовым аргументом:

public void set(string arg){

// Вызывается версия метода

// с двумя аргументами:

set(0,arg);

}

}

class PersonDemo{

// Главный метод программы:

public static void Main(){

// Создание объекта fellow класса Person:

Person fellow=new Person();

// Вызов версии метода set() с одним

// числовым аргументом:

fellow.set(100);

продолжение

62

Глава 2. Классы и объекты

Листинг 2.3 (продолжение)

// Отображение результата:

fellow.show();

// Вызов версии метода set() с одним

// текстовым аргументом:

fellow.set("Колобок");

// Отображение результата:

fellow.show();

// Вызов версии метода set() с двумя аргументами:

fellow.set(10,"Буратино");

// Отображение результата:

fellow.show();

// Вызов версии метода set() без аргументов:

fellow.set();

// Отображение результата:

fellow.show();

Console.ReadLine();

}

}

Перегруженный метод находим в классе Person. У класса два поля (цело-

численное age и текстовое string) и два метода (show() и set()) — правда, один из этих методов (метод set()) перегружается. Для этого метода опи-

сано четыре различных версии: с двумя аргументами, без аргументов, с од-

ним текстовым аргументом и одним целочисленным аргументом.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных