Як відомо, Обєктно-орієнтоване програмування містить три основні принципи: інкапусляція, наслідування, поліморфізм. ООП появилося приблизно в 1960 роках, одна з перших мов ООП був Smalltalk .
В коледжі в нас був спецкурс "ООП". Але все, що я запамятав це списаний конспект на 60 аркушів i синтаксис конструкторів на Object Pascal(Delphi) i C++. Влітку на канікулах я читав підручник по Java. Саме тоді я зрозумів, що таке Обєкт і Клас. Зараз на 4 курсі я вивчаю C#. Тому весь представлений код буде написаний на цій мові.
Все що нас оточує як не парадоксально це обєкти: Телевізор, Магнітофон, Автомобіль, Клієнт(банку чи ще якоїсь установи).
Класс - це новий тип даних, який описує структуру обєкта і методи, які задають поведінку обєкта. Наприклад, автомобіль(який небудь) є екземпляром класу "Автомобілі". Тобто клас це тільки схема, опис обєкта. Отже, шо таке класс і обєкт розібралися.
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public enum Access { User, Administrator };
public class User
{
//Це поля класу User
//Вони приховані, тому тільки методи даного класу можуть з ними працювати
private string name;
private string lastname;
private int age;
private Access level;
private double ID;
private static int i = 0;
//А це методи з модифікатором public, тому вони будуть доступні користувачу
public void set_name(string name)
{
this.name = name;
}
public void set_lasname(string lastname)
{
this.lastname = lastname;
}
public void set_age(int age)
{
this.age = age;
}
public void set_level(Access level)
{
this.level = level;
}
public string get_name()
{
return this.name;
}
public string get_lastname()
{
return this.lastname;
}
public int get_age()
{
return this.age;
}
public Access get_level()
{
return this.level;
}
//private метод
private static double Generator()
{
return ++i;
}
//Цей метод дозволяє переглянути обєкт
public void GetInformation()
{
Console.WriteLine("ID:{0}\t Iнiцiали: {1}\t{2}\t Вiк:{3}\t Права:{4}", this.ID, this.name, this.lastname, this.age, this.level);
}
public User(string name, string lastname, int age, Access level) //конструктор
: this()//викликаємо конструктор який знаходится нижче
{
this.name = name;
this.lastname = lastname;
this.age = age;
this.level = level;
}
public User()//ще один конструктор
{
this.ID = Generator();//Ось цей метод прихований від "зовнішнього світу"
}
}
class Program
{
static void Main(string[] args)
{
User NewUser = new User("Вiтя", "Дзундза", 19, Access.Administrator);
User NextUser = new User();
NextUser.set_name("Iван");
NextUser.set_lasname("Ковалюк");
NextUser.set_age(34);
NextUser.set_level(Access.User);
NewUser.GetInformation();
NextUser.GetInformation();
Console.ReadLine();
}
}
}
Те через, що ми впливаємо на обєкт називається Інтерфейс обєкта, а внутрішня реалізація обєкта прихована. Ця методика приховування внутрішньої реалізації і надання інтерфейсу (обєкта) для доступу до полів цього обєкта і зміни його поведінки називається Інкапсуляція. :)
Comments