Перед тем как приступить непосредственно изучению языка 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) Вне класса работа не возможна. Буквально конечно это выражение воспринимать не стоит. Объект — это проявление класса, и работая с объектом, вы так же работаете и с классом.