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)

Docker multi-stage build in Action

Hi everyone, today I want to show how to create the small docker image for deploying the application. I've an application which consists of a backend(go application) and angular based front-end application. So let's create the Dockerfile and step by step fill it with commands. I started with frontend Next I added the golang builder For avoiding, the certificate signed by unknown authority error during HTTP request I add trusted certificates (details more here Stackoverflow issue ) Finally, copy all items to the end image I keep my container on the quay.io so everyone can see logs and pull the container docker pull quay.io/vdzundza/shoper All Dockerfile listing here Github Gist Thanks everyone !