Skip to main content

Основні принципи ООП.Інкапсуляція


Як відомо, Обєктно-орієнтоване програмування містить три основні принципи: інкапусляція, наслідування, поліморфізм. ООП появилося приблизно в 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

Popular posts from this blog

Університет нафти і газу

Всім привіт. Я поступив в національний технічний університет Нафти і Газу. Поступив на 2 курс, хоча мав б бути на третьому. Я дякую, за те, що поступив на другий курс на держ. форму. Але не все так просто. Потрібно перезаразувати години предметів, які вчили в універі на 1 і частково на 2 курсі, для того щоб без проблем перейти на 3 курс. На рахунок програмування, майже нічого нового немає. Хіба що будем вчити Java на на предметі "технологія розробки ПЗ". Ось і все, що я хотів написати. Всім удачі!

Some notes about transportation problem

Hello guys. After work I remembered my studying at university. My first thoughts is about solving Monge–Kantorovich transportation problem using a modification of simplex method known as Method of Potentials. Transportation theory investigates methods for optimal allocation resources among consumers and transportation them with minimum cost. For example, suppose we have some factories which provide materials and shops which consume it. (To be continued)

New Personal Website

Hello World, hello my blog again. I have good news, finally, I created my website , I do not know exactly what is the main goal for that and how it will be updated. Now I want to sync my current posts from the blogger platform and personal website, it can be easily done by using the `Blogger API` with some extra requirements which I want to have.   Especially,   - able to show/hide the post separately from blogger (1)   - use custom posts order (2)   - add some extra information besides tags (3)    For instance, technology stack, team size, etc. - add a possibility to use any 3rd party code highlighter instead of post-computed HTML from blogger (4) I think that the 4 the most required and nice feature - able to sync manually, or use cron for syncing with blogger (5)   There is some initial schema of my application   This is a pretty simple solution: two go services, one for fetching data, checking referential integr...