Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
voprosy_xit_i_otvety_s_portala.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
3.15 Mб
Скачать

21 Применение объектов. Свойства. Методы. Экземпляры объектов с#

Классы в C#

C# - полностью объектно-ориентированный язык, следовательно код и данные могут описываться только внутри классов. Класс - набор методов, полей, свойств и событий. Класс - это тип данных, описывающий некий элемент некой области реального мира. Описание класса начинается с ключевого слова class, далее идёт имя класса, а тело класса заключается в фигурных скобках.

Пример описания некоторого класса:

class SomeClass

{

private int _field;

public bool Property { get; set; }

public event EventHandler SomeEvent;

protected string Method()

{

return "Hello, world!";

}

}

Объекты и экземпляры объектов

Описанный класс - это новый тип данных. Экземпляр класса создаётся с помощью операции new. При этом CLR генерирует в IL-коде команду newobj. Когда компилятор встречает эту команду, он выделяет в управляемой куче необходимую память для объекта. С этого момента объект считается созданным, и программист может обращаться к методам и свойствам этого класса (если класс не статический или абстрактный).

Пример создания экземпляра класса:

namespace AnyNamespace

{

class AnyClass

{

private int _anyField;

public bool AnyProperty { get; set; }

public bool AnyTrueMethod()

{

return true;

}

}

class SomeClass

{

public static Main(string[] args)

{

var anyclass = new AnyClass();

}

}

}

Методы

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

В C# примитивные типы (byte, int, double, float, bool и пр.) и структуры (struct) передаются по значению (т. н. значимые типы), остальные типы передаются по ссылке (т. н. ссылочные типы). C# также поддерживает явное описание передачи параметров по ссылке (ключевые слова ref и out). При использовании out компилятор контролирует наличие в методе присваивания значения.

Пример описания метода:

class TrueClass

{

public bool TrueMethod()

{

return true;

}

}

Свойства

C# поддерживает концепцию «свойств» — псевдополей класса, к которым обеспечивается полностью контролируемый доступ путём создания методов для извлечения и записи значения поля. Описания свойств производятся с помощью аксессоров get и set.

C# также включает так называемые индексаторы, которые можно считать особым случаем перегрузки операций (аналогичным перегрузке operator[] в C++), или параметризованными свойствами. Индексатор — это свойство с именем this[], которое может иметь один или более параметров (индексов), причём индексы могут быть любого типа. Это позволяет создавать классы, экземпляры которых ведут себя подобно массивам:

myArray[4] = 5;

string user = xmlNode.Attributes["user"];

bookList = myLibrary[currentBook];

Использование свойств не одобряется некоторыми авторитетными программистами. В частности Джеффри Рихтер пишет:

«Лично мне свойства не нравятся, и я был бы рад, если бы их поддержку убрали из Microsoft .NET Framework и сопутствующих языков программирования. Причина в том, что свойства выглядят как поля, на самом деле являясь методами.»

Согласно общепринятому в C# стилю именования, имена свойств визуально отличаются от полей тем, что начинаются с прописной буквы.

Пример описания свойства:

class MyClass

{

private int _number;

public int Number

{

get { return _number; }

set { _number = value; }

}

}

Пример индексированного свойства:

class Indexator

{

private int[] _array;

public this[int index]

{

get{ return _array[index]; }

set{ _array[index] = value;}

}

}

22 Объекты ASP.NET. Объект Response. Метод Write. Буферизация страниц. Перенаправление пользователей

23 Объекты ASP.NET. Объект Request. Объект HttpCookie. Создание cookie. Доступ к cookie

24 Объекты ASP.NET. Объект Page. Объект Session. Управление объектом Session. Работа с объектом Session. Сеансы без cookie

25 Объекты ASP.NET. Объект HttpApplication. Объект HttpServerUtility. Перенаправление пользователей. Преобразование формата строк символов. Управление сценариями. Создание объектов

26 Базовые понятия формы. Пример Web-формы

Web-формы в ASP.NET — это основной элемент динамического Web-сайта. Web-формы определяются как программируемые Web-страницы, которые служат пользовательским интерфейсом в приложениях ASP.NET.

Web-форма — это комбинация кода HTML, программного кода и элементов управления. Web-формы в приложении ASP.NET представлены файлами с расширением .aspx. Именно по расширениям Internet Information Server распознает файлы как Web-формы. При этом на одном сервере вполне могут сосуществовать как файлы .asp, так и файлы .aspx — обрабатываться они будут по разному.

Физически Web-форма представлена файлом с расширением . aspx. Расширение любой HTML-страницы можно изменить на .aspx. При этом представление страницы с новым расширением будет тождественно представлению исходной страницы. Иными словами, Web-формы совместимы снизу вверх с обычными HTML-страницами. Особенность Web-форм состоит в способе, при помощи которого программный код отделяется от самой формы. Исходный код (написанный не на C++) может храниться в отдельном не скомпилированном файле. Или же программный код (снова таки, не на C++) может быть вложен в . aspx-файл. И, наконец, код (написанный на С#, VB или C++) может храниться в предварительно скомпилированной сборке, содержащей динамически подключаемую библиотеку (DLL). Когда страницы загружаются Web-сервером, выполняется код, описывающий пользовательский интерфейс. Этот код динамически формирует отображаемую клиентом страницу.

Web-формы обычно создаются двумя способами:

в окне Solution Explorer можно щелкнуть правой кнопкой мыши по строке проекта, в контекстном меню выбрать Add New Item (Добавить новый элемент) и в списке шаблонов выбрать Web Form;

можно просто добавить в проект существующую страницу HTML с готовым оформлением и переименовать ее в окне Solution Explorer, присвоив ей расширение .aspx. Необходимые изменения на страницу будут внесены автоматически.

Web-форма состоит из двух частей:

отображаемого содержимого, или презентации формы. Как правило, отображаемое содержимое описывается на языке HTML;

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

Главное специфическое для ASP.NET содержание Web-формы — это специальные теги с атрибутами. На форме может быть три типа тегов с атрибутами:

страничные атрибуты, (@ Page), которые определяют общие параметры для всей Web-формы;

атрибуты тела Web-формы (body), которые определяют общие параметры отображения содержимого страницы;

атрибуты форм (form), которые определяют параметры работы с формой — набором элементов управления (не путать с Web-формой).

Пример Web-формы

В простейшей веб-форме requestSomething.aspx пользователь может ввести некоторую личную информацию и нажать на кнопку Submit (Отправить). После отправки веб-формы он получает ответ в виде содержимого, введенного им в текстовом поле с именем Tell Me About Yourself And Click Submit (Расскажите о себе и нажмите на кнопку Submit [Отправить]), а также в поле You Said (Вы сказали). Ниже на рисунке показана форма requestSomething.aspx после отправки информации на сервер.

Программный код данной Web-формы приведён ниже:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

namespace SimpleWF

{

/// <summary>

/// Summary description for requestSomething.

/// </summary>

public class requestSomething : System.Web.UI.Page

{

protected System.Web.UI.WebControls.Button Button1;

protected System.Web.UI.WebControls.TextBox txtYourself;

protected System.Web.UI.WebControls.TextBox txtResponse;

protected System.Web.UI.WebControls.Label Label2;

protected System.Web.UI.WebControls.Label Label1;

private void Page_Load(object sender, System.EventArgs e)

{

// Put user code to initialize the page here

}

#region Web Form Designer generated code

override protected void OnInit(EventArgs e)

{

//

// CODEGEN: This call is required by the

// ASP.NET Web Form Designer.

//

InitializeComponent();

base.OnInit(e);

}

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

private void InitializeComponent()

{

this.txtYourself.TextChanged += new

System.EventHandler(this.txtYourself_TextChanged);

this.Load += new

System.EventHandler(this.Page_Load);

}

#endregion

private void txtYourself_TextChanged

(object sender, System.EventArgs e)

{

this.txtResponse.Text = this.txtYourself.Text;

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]