Objektorienteeritud programmeerimine

Объектно-ориентированное программирование(OOP) – это подход, при котором вся программа рассматривается как набор взаимодействующих друг с другом объектов. При этом нам важно знать их характеристики.

Основные задачи ООП — структурировать код, повысить его читабельность и ускорить понимание логики программы. Косвенно выполняются и другие задачи: например, повышается безопасность кода и сокращается его дублирование.

позволяет выделить это общее в один объект (в данном случае более общим будет человек), а водителя — определить как человека, но с дополнительными свойствами и/или поведением. Например, у водителя есть водительские права, а у человека их может не быть.
Полиморфизм – это переопределение поведения. Можно снова рассмотреть «человека» и «водителя», но теперь добавить «пешехода». Человек умеет как-то передвигаться, но как именно, зависит от того, водитель он или пешеход. То есть у пешехода и водителя схожее поведение, но реализованное по-разному: один перемещается ногами, другой – на машине.

  • Инкапсуляция – сокрытие поведения объекта внутри него. Объекту «водитель» не нужно знать, что происходит в объекте «машина», чтобы она ехала. Это ключевой принцип ООП.
  • Наследование. Есть объекты «человек» и «водитель». У них есть явно что-то общее. Наследование позволяет выделить это общее в один объект (в данном случае более общим будет человек), а водителя — определить как человека, но с дополнительными свойствами и/или поведением. Например, у водителя есть водительские права, а у человека их может не быть.
  • прототип — объект-образец, на основе которого «рождаются» другие объекты, полностью копируя его или изменяясь в процессе. При изменении в прототипе в копиях также происходят соответствующие изменения.
  • Полиморфизм – это переопределение поведения. Можно снова рассмотреть «человека» и «водителя», но теперь добавить «пешехода». Человек умеет как-то передвигаться, но как именно, зависит от того, водитель он или пешеход. То есть у пешехода и водителя схожее поведение, но реализованное по-разному: один перемещается ногами, другой – на машине.
  • Класс – это шаблон, описание ещё не созданного объекта. Класс содержит данные, которые описывают строение объекта и его возможности, методы работы с ним;
using System;

namespace OOPforKids
{
    class Progra
  • Объект — экземпляр класса. То, что «рождено» по «чертежу», то есть по описанию из класса. В качестве примера объекта и класса можно привести технический чертёж для изготовления детали — это класс. Выточенная же на станке по размерам и указаниям из чертежа деталь – объект.
  • Поле– переменная, связанная с классом или объектом. Все данные объекта хранятся в его полях.
примеры кода
namespace OOPforKids
{
    public class Person
    {
        string eesnimi;//поля
        int vanus;
        int salary;// поля2
        string name;
        int height;
        string status;
        int palk;
        Sugu sugu;
        Emakeel emakeel;
  • Конструктор – специальный блок инструкций, вызываемый при создании объекта.
 пример кода
public Person() { }//конструктор
        public Person(string Eesnimi,Emakeel emakeel,Sugu sugu)
        {
            eesnimi = Eesnimi;
            this.emakeel = emakeel;
            this.sugu = sugu;
        }
        public Emakeel Emakeel
        {
            get { return emakeel; }
        }
        public Sugu Sugu
        {
            get { return sugu; }
        }
        public string Eesnimi
        {
            set { if (eesnimi == null) eesnimi = value; }
            get { return eesnimi; }
        }

Наследование. Класс Manager (пример)

  • Наследование – создание нового класса на базе уже имеющегося, или базового класса. Принцип наследования состоит в том, что элементы данных  и методы базового класса автоматически становятся элементами данных нового класса. Класс в С# может иметь только одного предка.
  • class имя_класса : имя_класса_родителя
 Пример основного класса:
class Person
    {
        string fam;     // поле фамилия
        int salary;     // поле зарплата
        int tab;        // поле табельный номер
         public Person(string Fam, int Tab, int Salary)  //конструктор с параметрами
        {
            fam = Fam;
            tab = Tab;
            salary = Salary;
       }
        public Person() { }         // конструктор по умолчанию
         public string Fam  //свойство для поля фамилия
        {
            set { if (fam == null) fam = value; }     //код - установка значения поля фамилия
            get { return fam; }                       //код - чтение значения поля  фамилия
        }
         public int Tab        //свойство для поля табельный номер
        {
            set { tab = value; }    //код - установка значения поля табельный номер
            get { return (tab); }       //код - чтение значения поля  табельный номер
        }
         public int Salary  //свойство для поля зарплата
        {
            get { return salary; }     //код - чтение поля зарплата
            set {   if ((value > 13000) && (value < 17000)) salary = value; }   //код - установка с проверкой поля зарплата
        }
   }
Пример кода Наследника:

class Manager : Person  //создаем класс-наследник Manager, для которого базовым является Person
    {
        string company;     // поле  название комании
        int sale;           // поле  объем продаж
         public Manager() { }  // конструктор по умолчанию
        // конструктор класса-наследника с параметрами
        public Manager(string Fam, int Tab, int Salary, string Company, int Sale)
            : base(Fam, Tab, Salary)
        {
            company = Company;
            sale = Sale;
        }
         public string Company      //свойство для поля название компании
        {
            set { if (company == null) company = value; } //код - установка поля название компании 
            get { return company; }                      //код - чтение поля название компании    
        }
         public int Sale     //свойство для поля объем продаж
        {
            set {  sale = value; }   //код - установка значения поля объем продаж  
            get { return (sale); }   //код - чтение поля объем продаж
        }
        public double Bonus   //свойство для подсчета премии от объема продаж
        {
            get { return sale * 0.05; }
        }
        public void Show()  // метод вывода значений всех полей
        {
            Console.WriteLine("Фамилия " + base.Fam);  
            Console.WriteLine("Табельный номер " + base.Tab);
            Console.WriteLine("Зарплата " + base.Salary);
            Console.WriteLine("Компания " + company);
            Console.WriteLine("Объем продаж " + sale);
            Console.WriteLine("Бонус " + Bonus);
            double sum = Bonus + base.Salary;
            Console.WriteLine("Общая сумма зарплаты " + sum );
        }

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

Пример кода 
 abstract class Person
    {
       string name;   //Фамилия
       public void SetName()        // Метод запроса фамилии
         {   Console.Write("Фамилия :");  name = Console.ReadLine(); }
       public void GetName()      // Метод вывода фамилии 
         {   Console.WriteLine(" Господин "+name);   }
  //реализация следующих методов будет определена в потомках      
            public abstract void SetData();   // Метод запроса данных
            public abstract bool SetStat();   //  Метод определения выдающейся личности
    }
     class Student:Person   //производный класс  Студент
    {      double ball;     //средний балл студента
     public override void SetData()     // Метод запроса данных по студенту
        {       Console.WriteLine("Студент:");
                 base.SetName();    // вызов метода базового класса Person
                Console.Write("Средний балл:");
                string s;
                s = Console.ReadLine();
                ball = Convert.ToDouble(s);
 public override bool SetStat()   // Метод определения выдающегося студента 
{ if (ball > 4.8) { base.GetName(); Console.Write("Средний балл=" + ball); return true; } else return false; }
 }
  class Teach : Person    //производный класс  Преподаватель
    {      int kol;          // количество публикаций преподавателя
     public override void SetData()   // Метод запроса данных по преподавателю
        {     Console.WriteLine("Преподаватель");
              base.SetName();     // вызов метода базового класса Person
              Console.Write("Кол-во публикаций:");
              string s;
              s = Console.ReadLine();
              kol = Convert.ToInt32(s);
            }
  public override bool SetStat()  // Метод определения выдающегося преподавателя 
   { if (kol > 10) { base.GetName(); Console.Write("Количество публиаций=" + kol); return true; } else return false; }
   }
Scroll to Top