Перед тем как приступить непосредственно изучению языка C#, я хотел бы для начала дать объяснение понятиям class и object, это важно. В своё время я не серьёзно отнёсся к тому что бы четко сформулировать для себя эти понятия, и позже горько поплатился неясностью в их понимании в C# (это был в моей жизни первый объектированный язык, с которым мне предстояло познакомиться). Очень долго не мог понять: зачем существует class и object, как они взаимодействуют? В будущем для меня это породило очень много проблем, и я постараюсь сделать так, чтобы вы не наступили на те же грабли.

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

Представьте себе животное, не важно какое, далее мы его будем называть Animal. Из чего может состоять Animal? Из множества характеристик, из умений, функций и т.д. Не важно будь это корова, тигр или медведь – они обладают своими свойствами.

Давайте попробуем их описать:

Breed – порода;

Age — возраст;

Height — высота;

Weight — вес;

Growth — рост;

Length — длина;

Набор этих характеристик можно назвать свойствами. То есть наше животное обладает шестью свойствами, и в принципе любое животное подходит под них. Так же оно имеет определенные способности, активные действия:

Hurry — бег;

Walk — прогулка;

Sleep — сон;

Eat — питание;

Естественно наше Animal должно питаться, должно спать, может гулять и бегать.

Запомните, что относ

То есть на данный момент мы описали для Animal его свойства и методы (так описываются функции в C#). Методы, можно сказать — это динамическое проявление вашего творения. Свойства в свою очередь – это статические характеристики вашего творения.

С точки зрения C# мы с вами только что создали Class по имени Animal. Этот Class сейчас практически бесполезен, т.к. мы имеем лишь заготовку нашего животного, но конкретного животного нет. Что нужно сделать? Конкретизировать этот *шаблон* Animal.

Итак мы имеем Class Animal, его свойства (breed, age, weight, growth, length) и методы (hurry, walk, sleep, eat). Под этот класс подходят собака (Dog) и кот (Cat), возьмем их в качестве примера. С точки зрения объектно-ориентированного программирования, Dog и Cat являются экземплярами (instance) класса Animal. Почему? Потому что они имеют все то, что и описано в классе Animal. Собака имеет свою породу, возраст, вес, высоту, длину и полный рост. Так же она может бегать, с ней можно гулять, она может спать и должна есть. С кошкой аналогичная ситуация.

Иногда, instance называют по-другому, а именно объектами (objects).

Закрепим: если мы хотим создать объект некоторого животного, то мы должны понимать заранее, что конкретный экземпляр(объект), будет иметь все те характеристики, которые были описаны для него в некотором классе (в данном случае классе Animal).

Если мы хотим иметь экземпляр (один, два, три, десять, сто и т.д.), сначала мы должны определить некоторый класс. Если его определили до нас, то мы можем создать уже готовых животных. Если хотим создать то, чего еще не существует, то нужно: создать Class, для него создать свойства и методы (либо что-то одно), и только потом создать экземпляр. Невозможно существование экземпляра (например Овчарка), без существования класса (например Собака). Однако наоборот, класс без экземпляра существовать может. К примеру на Луну высадились космонавты. Они знают о классе Animal, но экземпляров этого класса на Луне нет, а существованию класса это ни каким образом не мешает.

Следующее что нужно уяснить, это два момента:

1) Вся логика заключена в классах. Class – дверь в мир программирования, и работая в C# вы должны их использовать.

2) Вне класса работа не возможна. Буквально конечно это выражение воспринимать не стоит. Объект — это проявление класса, и работая с объектом, вы так же работаете и с классом.