Уроци и предмети в сла

Най-накрая стигнахме до най-важните теми в уводната курса. Днес ние ще говорим за класове и обекти. Освободете малка и не сложно. Кое е по-добро.







Клас - нищо като структура, към което се добавя функция. И на обекта - това е променлива структура.

Този материал ще бъде по-лесно да се разбере, ако сте запознати със структурите.
структурно програмиране

Всички примери, обсъждани досега са свързани с структуриран програмиране. Негова отличителна черта е програма, дял код блокове, изпълнение на някои специфични задачи. В този случай, на структурните звена са функции и модули (които могат да бъдат представени в отделни файлове).
Обектно-ориентираното програмиране (ООП)

По-напреднал е обектно-ориентираното програмиране (ООП по-долу) на. OOP концепция за по-приложим за данни на организацията ви. Обектно-ориентиран прави живота по-лесен програмист, това е без съмнение. Главната особеност е интеграцията на данни и функции.

Ключови понятия в обектно-ориентиран са обекти и класове. Класове - структура, в която добавената функция. И предмети - структурна променливи.
определение клас

Дефиницията на клас трябва да бъдат поставени преди основните.

Да започнем с един прост пример:

В този пример, определянето на дефиницията на клас е почти идентични структури. Има само две разлики: заглавието вместо ключовата структура е на стойност клас. Вторият - на първия ред на дефиницията на класа трябва публично с двоеточие. Тук ще разгледаме на обществеността в най-скоро. На първо място, ние създаваме променлива същия тип войник.

Тук ние сме създали един обект войник клас а. Виж, съвсем различен от всички структурни променливи. В този случай обектът (клас променливи) може да се използва, както и структурните променливи.
Достъп ТЕХНОЛОЗИТЕ публичния и частния

По подразбиране, структурите, използвани от спецификатор обществеността за достъп, както и частни класове. Да разгледаме примери за неквалифициран:

Тук, между структури и класове е важна разлика. Ето как да изглежда наистина предишното определение:

Компилаторът автоматично вмъква публични и частни. Структурата по подразбиране се използва от обществени, клас по подразбиране се използва лично.
Достъп спецификатор обществен

Това подразбиране спецификатор се използва в структури. За да го използвате в необходимостта в класната стая, за да го декларира изрично.

Публична спецификатор позволява променливи / обекти са създадени на базата на тази структура / клас достъп до полетата.

В този случай, използването на класове не се различава от структурите.
частен спецификатор за достъп

Ние винаги ще декларират спецификатори за достъп ясно: и двете частни и публични.

Когато този пример, компилаторът ще генерира грешка. Нямаме достъп до полето за амуниции и извън класната стая.

Извън класната стая - така че където и да е в фигурните скоби на дефиницията на класа (там е изключение, но повече за това по-долу). Ако обектът на класа се опитва да получи достъп до променлива клас (a.ammo), се счита също така, че е "извън класната стая".

спецификатори за достъп (и публични, така и частни) са, тъй като те се появяват в класа до момента, когато срещне още спецификатор или дефиниция клас цели.

Какво е все едно да се дефинират променливи в блока с обществеността на спецификатор? Факт е, че в допълнение към класовете на променливи може да съдържа функции.

Функция дефинирани в рамките на един клас се наричат ​​методи на класа.
методи на клас

Разгледаме следния пример: Да кажем, че ние искаме да учим нашите войници да ходи. Ето как ще изглежда, когато се използва структури:

Разбира се, че е по-добре да се премести на функцията за запис:

невалидни ход (междинно съединение X, Int у) <>

И това трябва да изглежда като на тялото да функционира? Ние можем просто да напишете:

Но след това, ако имаме няколко вида войник от променливи, не можем да използвате функцията за движение с тях. Ето защо, ние трябва да мине още един аргумент - структура променлива, чиито полета са се променили. Така че:

Сега нека видим как raboat с тази функция:

Функцията е преминал променлива войник, но тя трябва да бъде и да се върнат от функцията. Функцията преминава допълнителни 8 байта (полета X, Y променлива войник) и функцията връща осем байта. Със сигурност по-добре войник да премине чрез препратка.

Вижте колко е лесно! С класа всичко е много по-просто:

Във вътрешността на функцията сме определили функцията движение. Имайте предвид, че в него не е необходимо да премине обекти от класа - метод, той не знае какво да възрази, че е причинил. DX и Dy - стойности, които ще се променят полетата на класа.

методи клас те се позовават на почти както и обичайните функции. В този случай, методът не знае какво да възрази, че е причинил, и ще се промени областта на желания обект.
Скриване на данни

Сега нека все пак ние трябва да разберем защо там е частна спецификатор за достъп.

Ние нямаме достъп до променливите х, у. Но те са на разположение в един клас. метод ход също има достъп до тях, тъй като това е метод за клас войник.







Сега, промяна на Х и У може да се движи само с помощта на метода. х и у са скрити. И това е много вярно. За да се разбере защо това е така, ние няма скоро - само когато започнем да работим с големи класове.
Конструкторът на класа

Сега, когато Нашите данни проекти сигурно скрити от частния, на спецификатор, опитайте се да ги инициализира:

войник а =;

Но след това компилаторът ще даде грешка да каже: Ами това е всеки от вас се опитват да получат достъп до скрити данни?

Какво да се прави? Оказва се, че ние имаме достъп до променливи чрез etip ход, и как да настроите тези променливи начални стойности?

Ако се опитате следния метод:

След това, разбира се, компилаторът ще генерира грешка и след това, тъй като дефиницията на класа не се разпределя памет.

Така че, във всеки клас има специална функция, която се нарича всеки път, когато даден обект е създаден от този клас. Тази функция се нарича клас строителя. Ако не е изрично създаде конструктор, компилаторът призовава конструктор по подразбиране.

Дизайнер - това е една обща черта, но тя няма стойност замяна. дизайнер име съвпада с името на класа. Дизайнерът трябва да се намира в публичната част.

Конструкторът се нарича, когато един клас от обекти:

войник А, В;

Тук, както за обекти а и б се нарича конструктор.

Има също така и под формата на запис:

Изглежда имаше намек, че функцията се нарича (конструктор), за да създадете и б.

Между другото! Конструкторите се наричат ​​не само за потребителски типове данни, но също така и за стандарта. Например, при определяне на вида на променлива съответния конструктор се нарича овъгляване. В този случай, строителя заделя памет за променливо - един байт.
Списък конструктор инициализация

Определяне на класа конструктор войник е абсолютно прав. Но обикновено в тялото на конструктора не инициализира променливи на класа. Вместо това, initsitsalizatsii списъци се използват, за да се инициализира променливите на класа. Ето дефиницията на класа конструктор на войник със списък на инициализация:

списък за инициализация се записва след скоби заглавие дизайнер и разделени със запетая. В списъка клас променливи са разделени със запетаи, а стойността е написано в скоби, които трябва да се инициализира променливи.
претоварени функции

Преди да продължите да се говори за класа, ние трябва да знаем какви са претоварени функции.

Да кажем, че имаме нужда от две от същите функции, които оперират на различни типове данни. Една функция се предава аргумент от тип Int, а в друг - вида на плувка. В този случай, със същото име може да се използва в продължение на две функции. Тези функции се наричат ​​претоварени:

Имайте предвид, че там е в действителност, тези две функции са определени, но със същото име. Факт е, че компилаторът търси не само името, но и от броя и вида на аргументите на функция. В този случай, типа на връщане не се взема под внимание, когато се опитват да се определи следните функции, компилаторът ще генерира грешка:

Сега помислете за използването на претоварени функции на практика:
Тъй като дизайнерите - това е нищо, като функция на, съответно, те могат да се претоварят. За тази цел определянето на клас е необходимо да се определят два конструктора:

Заглавие на втория дизайнер се оказа доста дълго, но това се компенсира появи в нашите възможности:

войник s1;
войник s1 (3,4,10);

Когато създавате първата променлива конструктор се нарича без аргументи. Във втория случай - на дизайнера с аргументи. Вижте колко е лесно, сега е възможно да се инициализира нови променливи. В този случай, ние използваме списъка на инициализиране, просто замени скобите не са постоянни стойности, както и стойностите на параметрите, предавани на строителя.
Идентификация на методи извън класа

В рамките на класа блок обществеността на обявяваме метода на атака. Определяне на метода е извън този клас, но методът все още може да използва скрит dannami своя клас. За да стане ясно, че тази функция е метод на класа, на функционирането на глобалната използваната резолюция. Първо, ние напишете името на класа, глобалните операции подписват разрешение и след това - името на метода. Във всяко друго отношение дефиницията на функцията съвпада с факта, че вече видяхме.

Ето как тя ще изглежда като войник клас, ако ние ще представи метода на движение извън класа:

Методите се извършват извън дефиницията на клас да се създаде големи класове.
Статично данни клас

За всеки обект, този клас създава свой собствен набор от променливи. Но ние имаме възможност за всички обекти, за да се създаде една променлива. В него, например, можете да съхраните номера на вече съществуващи обекти от този клас.

Counter променлива ние обявена със статичната ключова дума. Също така извън класа, ние се инициализира тази променлива. В инициализация, ние, както в класната стая, използвайки работата на общо разрешение.

В конструктора, ние увеличаваме променлива по един.

Сега всеки път, програмата ще създаде войник тип обект на, се противопостави на променлива се увеличава.
упражнения:

Последни от дъската

lalala1006 → курсове Учител (Minecraft, надраскване, Unity 3D, разработчик на игри)
Учим децата на програмиране чрез създаването на игри за повече от две години. През това време ние ще се строи.

Edvard007 → Какво става, ако Insorg блокиран
Уважаеми потребители на форума! Ако изпитвате затруднения с достъпа до нашите уеб ВЕИ.

ganny → 3000 рубли бонус. Автомати Vuulkan
3000 рубли на записване бонус игри клуб вулкана. Бонусът се дава само тук. Wulka.

ganny → Volcano казино пари реално ли е?
И тук са най-добрите онлайн казина препоръчват на тези, които спазват лиценза за казино. Интересни проекти, многоезичен.

IndieCurator → Насърчаване на вашите Парни игри
Господи! Всеки уважаващ себе разработчик \ издател да пусне играта, знае, че без реклами.

proxyan → Service PROXYAN.net - купи надежден прокси сървър, заведения за бързо HTTP / SOCKS
Service PROXYAN.net - Професионална решение за сигурност на сърв мрежа.

Гост → NextCastle партия - фестивал на инди и ретро игри
е силно проследим, е с ниско въздействие върху околната среда, е изключително издръжлив, може да бъде закупен на голям. Гост → Вътрешен екип обявява играта с необичайно име «RIP»
Цирконии възсиява за тропическия Фламинго, Ocean Life и тропическа Sunset сексапил, в разл. Гост → Тежки подкрепления заразената зона Тактики
Тути аз modelli Sono Стати rinnovati Нело СТИЛ, в quanto магистър Хронометър, Sono assolutamente. Гост → Вътрешен екип обявява играта с необичайно име «RIP»
Scopra ла Nuova Collezione costituita га orologi примадона. Blitz3d гости → Изтеглете най-новата версия безплатно, прог
Нормална програма може да бъде спам игри, но първо трябва да се търси 300000 уроци. Гост → Ръководство как да създадете MMORPG
Както MMORPG играч с 15-годишен опит, абсолютно съгласен, че в основата на цялата онлайн и. → гости Изпълнение на просто свързани и двойно-свързани списъци - 2
Отидох тази websitewebsite и аз вярвам, че имате много прекрасна информация, запазена в моя б. Гост → опустошение Приложение към призива на Duty: Ghosts
А стратегическа игра страхотно. realmer сблъсък

Нашите приятели