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

3.6.6. Понятие «Объект» Понятие «Объект»

1. Понятие «Объект»

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

2. Экземпляры классов в сравнении с экземплярами классов

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

Экземпляры классов создаются с помощью оператора new. В следующем примере Person является типом, а person1 и person2 — являются экземплярами или объектами этого типа.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace LC_Console

{

public class Person

{

public string Name { get; set; }

public int Age { get; set; }

public Person(string name, int age)

{

Name = name;

Age = age;

}

}

class Program

{

static void Main()

{

Person person1 = new Person("Anna", 24);

Console.WriteLine("person1 Имя = {0} Возраст = {1}", person1.Name, person1.Age);

Person person2 = person1;

person2.Name = "John";

person2.Age = 22;

Console.WriteLine("person2 Имя = {0} Возраст = {1}", person2.Name, person2.Age);

Console.WriteLine("person1 Имя = {0} Возраст = {1}", person1.Name, person1.Age);

Console.WriteLine("Для продолжение нажмите любую клавишу . . . ");

Console.ReadKey();

}

}

}

/* Выведет:

* person1 Имя = Anna Возраст = 24

* person2 Имя = John Возраст = 24

* person1 Имя = John Возраст = 22

* Для продолжение нажмите любую клавишу . . .

*/

Поскольку структуры являются типами значений, в переменной объекта структуры хранится копия всего объекта. Экземпляры структур также можно создать с помощью оператора new, однако он не является обязательным.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace LC_Console

{

public struct Person

{

public string Name;

public int Age;

public Person(string name, int age)

{

Name = name;

Age = age;

}

}

public class Application

{

static void Main()

{

Person p1 = new Person("Alex", 9);

Console.WriteLine("p1 Имя = {0} Возраст = {1}", p1.Name, p1.Age);

Person p2 = p1;

p2.Name = "Spencer";

p2.Age = 7;

Console.WriteLine("p2 Имя = {0} Возраст = {1}", p2.Name, p2.Age);

Console.WriteLine("p1 Имя = {0} Возраст = {1}", p1.Name, p1.Age);

Console.WriteLine("Для продолжение нажмите любую клавишу . . .");

Console.ReadKey();

}

}

}

/* Выведет:

* p1 Имя = Alex Возраст = 9

* p2 Имя = Spencer Возраст = 7

* p1 Имя = Alex Возраст = 9

*/