Първите езици за програмиране са императивни езици или машинни инструкции (кодове). Те се състоеха от двоичен код, който се различаваше в зависимост от машината. Наборът от възможни команди за такива „езици“ от ниско ниво е малък, тъй като всяка машинна инструкция изпълнява определено действие (добавяне, копиране на машинната дума в регистъра, преминаване към следващия раздел на кода). Разбира се, за удобство, програмистите са разработили набор от писмо-аналози за тези машинни екипи и този начин на общуване с машината "желязо" се нарича асемблер на езика.
Асемблер
Езици на високо ниво
Структурно програмиране
Езикът на програмирането C
Обектно-ориентирано програмиране (ООП)
Полета
клас Car
{
низ brand = "Hunday" Solaris ";
низ цвят = "жълт";
двойна скорост = 0;
/* останалата част от програмния код * /
}
Инкапсулиране
Полетата могат да променят значението си в хода на програмата, ако е предоставена от програмиста. Ако авторът не желае полетата да са достъпни извън клас, а друга програма (потребител) може да промени стойностите си, той "капсулира данните, т.е. ги прави недостъпни, използвайки ключовите думи private, защитени. Yaksch Например, можете да направите всички класове от класа публични:
клас Car
{
обществен низ,
публична двойна скорост,
*
останалата част от програмния код
*
}
В този случай достъп до тези полета няма да бъдат ограничени. В интерфейса можете случайно или умишлено да промените важни данни в полетатав бъдеще неправилно да повлияе на работата на цялата програма:
& lt; script & gt; (adsbygoogle = window.adsbygoogle || []). push ({});
клас Главен
{
публичен статичен невалиден Main ()
{
Car car = new Car ();
car.colour = "Червен";
/* останалата част от програмния код * /
}
}
За да се избегнат случайни промени в данните, разработчикът ги капсулира. В случай на цвят на автомобил, вместо на публичен, трябва да напишете лично. Тогава промяната на цвета директно няма да бъде възможна.
Методи
Методите са функции, които ви позволяват да работите с полета на класа или с други данни. Подобно на всяка функция в процедурните езици за програмиране, те вземат данни и могат или да върнат резултата от изчисленията или да не се върнат (например да покажат нещо на конзолата). Например:
клас Car
{
обществен низ brand = "Hunday Solaris"
публичен низ color = "yellow"
публична двойна скорост = 0;
/* по-долу описва метода "Drive", който се предава на булевата променлива whatIsTrafficLight (със стойности само false - червена светлина, или true - зелена светлина, т.е. можете да отидете) * /
public void
{
if (whatIsTrafficLight == true)
{
скорост = скорост + 40;
}
друго
{
скорост = 0;
}
}
}
Накрая, използвайки метода Drive, променяме скоростта на машинния клас.
& lt; text /javascript "& gt;
може да blockSettings = {blockId:" RA-70350-45 ", renderTo:" yandex_rtb_R-A-70350-45 ", async: ! 0};
if (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings.statId = 70350;
! функция (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (функция () {Ya.Context.AdvManager.render (blockSettings)} , e = b.getElementsByTagName ("скрипт") , d = b.createElement ("скрипт"), d.type = "text /javascript", d.src = "//an.yandex.ru/system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (това, този документ," yandexContextAsyncCallbacks ");
Полиморфизъм
Вторият "стълб" на развитието на обектно-ориентирания подход е полиморфизмът. Бьорн Страуструп, създател на C ++ езика, формулира дефиницията на полиморфизма, както следва: "Един интерфейс - много реализации." Накратко, полиморфизмът е способността да се създаде абстрактен клас, който описва цялостния дизайн на структурата, и от него вече са създадени производни класове, които въвеждат липсващи механизми. Например, когато създавате герой в компютърна игра, от гледна точка на обектно-ориентиран подход, логично е първо да приложите абстрактната класа на личността, а от нея вече създавате специфични класове: Арчър, Лечител, Воин и т.н.
Или пък пример с кола. Ако работим с една машина, с няколко полета и методи, не е необходимо да променяме ръчно няколко стойности в кода. Но колко могат да бъдат такива машини? Или, например, потребителите в социалната мрежа? Всеки има име, фамилия, семейно положение, фотоалбум, огромен брой ценности, връзки към други страници, други потребители и т.н. И ако разработчиците на социални мрежи решат да направят редизайн, а някои потребителски настройки могат да бъдат променени или премахнати, тогава ще има много работа с този подход. Решава този проблемно-ориентиран подход. Класовете се създават не за всеки конкретен обект, а за абстрактния клас и от него първоначалносъздават се наследници. Подобно на капсулирането, полиморфизмът е второто най-важно правило за ООП.
Наследяване
Наследяването е друго правило, когато се използва обектно-ориентиран подход. Тя се състои в способността на класа на наследника да използва характеристиките на родителския клас. Например, ако искаме да имаме мотоциклет в нашия флот, тогава не е необходимо да се пишат същите свойства за нов клас. Вместо това можете да кажете, че мотоциклетът е наследник на класа от колата. Тогава става възможно да се използват подобни полета и методи на машината в класа на мотоциклет, например марка, цвят, скорост. В кода на наследството се посочва, както следва:
клас Мотоцикъл: Car
{
/* останалата част от програмния код * /
}
Сега Полетата и методите на автомобила клас-майка са достъпни за използване в мотоциклета клас-наследник. Накратко, наследяването е механизъм за повторно използване на кода и е насочен към удобно и логично компетентно разширение на програмата. Също така наследяването помага да се придържате към принципа на DRY (Не повтаряйте себе си). Според този принцип кодът не трябва да има повтарящи се сайтове, тъй като създава ненужна тежест при компилирането и изпълнението на програмата. Ако в кода има повтарящи се области, тогава той трябва да бъде оптимизиран - да го повторите в отделни методи и да го направите при необходимост; прилагат наследство към логически подобни обекти, които имат идентични полета и методи.