Программирование "без классов" в C#

Программирование "без классов" — это программирование без использования объектов, порождаемых из классов. Как правило, это программирование консольных приложений. Фактически мы достаточно подробно останавливались на нем в одноименном разделе, посвященном языку Java; см. разд. "Программирование без классов” и "Kjwccbi" главы 1. Рассмотрим снова

приложение для чтения двух целых чисел и нахождения их общего делителя. Это приложение представлено в листинге 3.1.

Листинг 3.1. Консольное приложение для нахождения наибольшего общего делителя

using System;

namespace ConsoleApplication5 /// <summary>

/// Summary description for Classl /// </summa ry> class Classl

static int А; static int В; static string s;

/// <summary>

/// The main entry point for the application.

/ / / < / summa ry>

[STAThread]

static void Main(string[] args)

//

// TODO: Add code to start application here //

Console.WriteLine("Vvedi czislo A"); s=Console.ReadLine();

A=Convert.ToInt32(s);

Console.WriteLine("Vvedi czislo B"); s=Console.ReadLine();

B=Convert.ToInt32(s); while (A!=B)

{

if (A>B)

A=A-B; else if (B>A)

B=B-A;

else

break;

}

Console.WriteLine("Common Divisor="+A);

Console.ReadLine();

Как видим, чтение строки с клавиатуры выполняется командой Console. ReadLine (). Полученную строку далее преобразуем в целое ЧИСЛО командой Convert.IntTo32(). Цикл while(A !=B)

{} выполняется до тех пор, пока переменная А не равна переменной в. Теперь заметим, что язык C#, как и Java, использует тот же синтаксис для цикла while, так что остается лишь указать, что без классов (условно, конечно, так как consoie и con- vert — это классы) программируют лишь отчаянные консерваторы (а мы не из их числа).

В C#, в отличие от Java, можно использовать структуры. Структура — это тот же класс, однако структуры не используют механизм наследования. Следующий код (листинг 3.2) демонстрирует использование структуры по имени Point. В этой структуре объявлены два поля x и у. Определен конструктор и метод сложения координат двух точек.

Листинг 3.2. Консольное приложение, использующее структуру Point

using System; namespace StructureApp

/// <summary>

/// Summary description for Classl.

/// </summary>

/// <summary>

/// Example of declaring and using a struct /// </summary> public class StructExample {

struct Point // Объявляется структура Point {

public int x; // Объявляются поля x и у public int у;

public Point(int x, int у) // Объявляется конструктор {

this.x = x; this.y = у;

}

public Point Add(Point pt) // Сложение двух точек

// покоординатно

{

Point newPt; newPt.x = x + pt.x; newPt.y = у + pt.y; return newPt;

}

}

static void Main(string[] args)

{

Point ptl = new Point(0, 1); // Создаем две точки ptl,pt2 Point pt2 = new Point(2, 3);

Point pt3;

pt3 = ptl.Add(pt2); // Третья точка получается как сумма // первых

Console.WriteLine("The new point coordinates are "+pt3.x+" "+ pt3.y);

Console.ReadLine();

Этот же пример можно вполне реализовать на основе классов:

using System; namespace StructureApp {

/// <summary>

/// Summary description for Classl.

/// </summary>

/// <summary>

/// Example of declaring and using a struct /// </summary> public class ClassExample {

class Point // Объявляется класс Point внутри класса // ClassExample

{

public int x; // Объявляются поля x и у public int у;

public Point(int x, int у) // Объявляется конструктор this.x = x; this.y = у;

}

public Point Add(Point pt) // Сложение двух точек

// покоординатно

{

Point newPt=new Point(0,0); newPt.x = x + pt.x; newPt.y = у + pt.y; return newPt;

Point ptl = new Point(0, 1); // Создаем две точки ptl,pt2 Point pt2 = new Point(2, 3);

Point pt3;

pt3 = ptl.Add(pt2); // Третья точка получается как сумма // первых двух

Console.WriteLine("The new point coordinates are "+pt3.x+": "+ pt3.y);

Console.ReadLine();

Отличий практически не видим. Однако имеем в виду, что классы в сравнении со структурами являются более мощными и эффективными средствами.

Источник: Герман О. B., Герман Ю. О., Программирование на Java и C# для студента. — СПб.: БХВ-Петербург, 2005. — 512 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100