C#   Уроки программирования с нуля. Си-шарп для чайников   C#

Здравствуйте, гость!
Вход
Регистрация


Понятие объектно-ориентированного программирования (ООП). Классы и объекты
Понятие объектно-ориентированное программирование (ООП) означает один из самых эффективных подходов к современному программированию.

Раньше программисты, в большинстве случаев, использовали функциональный или процедурный принцип программирования. Все программы, большие и маленькие, писались в одном файле. С течением времени программы становились всё сложнее и больше, что доставляло проблемы разработчикам при поддержке таких программ и внесении изменений. Эту проблему решает объектно-ориентированное программирование. ООП позволяет объединить данные и методы, относящиеся к одной сущности, и работать с ними, как с одним целым.

Классы и объекты. В чем разница?

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

Пример

Допустим, нам в программе необходимо работать со странами. Страна – это абстрактное понятие. У нее есть такие характеристики, как название, население, площадь, флаг и другое. Для описания такой страны будет использоваться класс с соответствующими полями данных. Такие страны, как Россия и Украина будут уже объектами (конкретными представителями типа страна).

Основные принципы объектно-ориентированного программирования

ООП основывается на нескольких базовых принципах, каждому из которых будет посвящен отдельный урок, а пока коротко рассмотрим их.

Инкапсуляция – позволяет скрывать внутреннюю реализацию. В классе могут быть реализованы внутренние вспомогательные методы, поля, к которым доступ для пользователя необходимо запретить, тут и используется инкапсуляция. Больше об инкапсуляции читайте в уроке Инкапсуляция в Си-шарп. Модификаторы доступа.

Наследования – позволяет создавать новый класс на базе другого. Класс, на базе которого создается новый класс, называется базовым, а базирующийся новый класс – наследником. Например, есть базовый класс животное. В нем описаны общие характеристики для всех животных (класс животного, вес). На базе этого класса можно создать классы наследники Собака, Слон со своими специфическими свойствами. Все свойства и методы базового класса при наследовании переходят в класс наследник. Больше о наследовании читайте в уроке Наследование в Си-шарп.

Полиморфизм – это способность объектов с одним интерфейсом иметь различную реализацию. Например, есть два класса, Круг и Квадрат. У обоих классов есть метод GetSquare(), который считает и возвращает площадь. Но площадь круга и квадрата вычисляется по-разному, соответственно, реализация одного и того же метода различная. Больше о полиморфизме читайте в уроке Полиморфизм в Си-шарп.

Абстракция – позволяет выделять из некоторой сущности только необходимые характеристики и методы, которые в полной мере (для поставленной задачи) описывают объект. Например, создавая класс для описания студента, мы выделяем только необходимые его характеристики, такие как ФИО, номер зачетной книжки, группа. Здесь нет смысла добавлять поле вес или имя его кота/собаки и т.д.

Все так запутано

Конечно, для тех, кто совсем не знаком с ООП, все это может показаться сложным, и сразу понять, что к чему, будет сложно. Но с дальнейшими уроками подход ООП для вас будет проясняться, и станет понятно, что всё очень логично.

PS. Не забываем подписываться на обновления по электронной почте в форме ниже!
Понравилась статья? Подпишись на рассылку и узнавай первым о новых уроках по почте!


Поделиться с друзьями:
20 июн 2013 01:29
Stavr 16 ноя 2016 09:54
Про классы и объекты рекомендую почитать - "C# для школьников", Дрейер М., самое начало.
Там очень хорошо разжевана эта тема.

Злобный программер 31 окт 2016 13:50
Тему ООП просто нереально объяснить в 3,5 кб текста.
Это 1,5 страницы книги, когда на самом деле на эту тему нужно не меньше 100 печатных страниц с примерами. И то не факт, что с 1 раза будет всё понятно.
P.S. Видимо, тут все новички вундеркинды!

Рамин 29 май 2016 13:08
Спасибо все обьяснено очень понятно

Andriy 17 мар 2015 22:52
Все описано коротко і ясно! Дякую за урок!!!

Slavik 30 сен 2014 21:00
спасибо за урок

Максим 21 май 2014 18:50
Яков
---
Да, уже работает нормально

Яков 21 май 2014 17:59
admin
______
спасибо!!!Так нормально будет?
FileStream longest = new FileStream("d:\\Восток рутина.txt", FileMode.Open);
StreamReader potok3 = new StreamReader(longest);
int max = 0;
int temp = 0;
while (!potok3.EndOfStream)
{
temp = potok3.ReadLine().Length;
if (temp > max)
max = temp;
}
Console.WriteLine(max);
potok3.Close();
Console.ReadKey();

Максим 21 май 2014 14:04
Яков
---
if (potok3.ReadLine().Length>max) // здесь считывается и проверяется одна строка
max = potok3.ReadLine().Length; // здесь снова считывается строка, и она уже не та что в условии

Считайте один раз строку в переменную, и дальше с не работайте

Яков 21 май 2014 03:17
p.s. к третье задаче(11 урок)
у меня при поиске самой длинной строчки на 18-й строчки максимальная длинна каким то раком превращается из 46 в 42,я ваще в непонятках...в чем может быть ошибка??

Яков 21 май 2014 02:59
В 11 уроке нет возможности добавить коментарий,там отсутствует кнопка,поэтому пишу здесь.
у почему то выходит неправильный ответ в 3-ей задаче
я проверил,выводит не максимальное число
//задача 3
FileStream longest = new FileStream("d:\\Восток рутина.txt", FileMode.Open);
StreamReader potok3 = new StreamReader(longest);
int max = 0;
while (!potok3.EndOfStream)
{
if (potok3.ReadLine().Length>max)
max = potok3.ReadLine().Length;
}
Console.WriteLine(max);
potok3.Close();
Console.ReadKey();

у меня правильный код?Если нет,я буду дальше искать проблему,может она в текстовом файле.

Максим 02 апр 2014 18:49
Ромик
---
Изучайте здесь всё последовательно

Ромик 02 апр 2014 14:20
Обязательно ли читать заранее об принцыпах, на которые выведены ссылки?
Если я не прочитал, мне сложнее будет усваивать информацию? Я , просто, хочу все последовательно и как надо:)


Добавить комментарий:

Имя (обязат.)
E-mail (обязат., не публикуется)


Для вставки ваших программ пользуйтесь кнопкой "исходный код"
Вёрстка сайта с нуля

Уникальный Видеокурс!

"Научись верстать сайты и заработай на этом!"

Получить видеокурс

Подпишись на курс по программированию, и узнавай первым о новых уроках!

RSS подписка Страничка Вконтакте Мы в Twitter

Ошибка в тексте? Выделите ее мышкой и нажмите Ctrl+Enter
Поблагодарить автора: Номер карты (ПриватБанк)
5168 7572 4170 8660
WebMoney
R372544961915 U685637142028 Z999792764387
Наверх
Система Orphus