Обектно-ориентираното програмиране - studopediya
В раздел 5.1, казахме, че програмиране парадигма на обектно-ориентираното включва създаването на активни софтуерни единици - обекти, които се състоят от процедури, които описват как обектът трябва да отговори на различни стимули. Когато обектно-ориентиран подход към изискваните обекти се определят с решение на задачите, които след това са описани като самостоятелна единица стойка. На свой ред, обектно-ориентирани езици за програмиране на предоставят средства за изразяване на тези идеи. В този раздел, ние изследваме някои от тези инструменти и как те са представени в трите най-известните обектно-ориентирани езици: C ++, Java и C #.
Помислете за процеса на разработване на компютърна игра, в която играчът трябва да защитава Земята от падащи метеори, да ги стрелба с мощни лазери. Всеки лазер има вътрешен магазин на енергията, която се консумира по време на стрелба. Когато енергийните доставки е изчерпан, лазерът става безполезен. Всеки трябва да може да насочва лазерния лъч в целта на дясно, на ляво и стреля.
Според обектно-ориентиран парадигма, всеки лазер в играта се реализира като обект, който съдържа информация за останалите енергийни резерви и процедурите за ръководството на лъча върху целта и стреля. Тъй като свойствата на тези обекти (лазери) са същите, те могат да бъдат създадени с помощта на един и същ шаблон. В обектно-ориентираното програмиране, такъв модел се нарича клас (клас). В C ++, Java и C # клас е описана с помощта на следното твърдение:
където CLASS_NAME - името, с което да се отнася към класа в програмата. свойства на този клас са описани в скоби.
Описание на данни
ще бъде във всеки
Предмет на този вид
---------1 --------- Методи описващи
като обекти от този тип
Трябва да се отговори на празнота turnteft () на различни мнения
> Фиг. 5.22. класовата структура, описвайки лазерен оръжие в компютърна игра
Например, Laserclass клас описващ лазери в нашата компютърна игра, е изобразена на фиг. 5.22. (По-подробно описание на този клас е осигурен по-късно на фиг. 5.24). Всеки обект създаден от този модел, ще включва
Принципите на обектно-ориентираното програмиране се използват за създаване на цялата мрежа софтуерни системи. За такива системи, инфраструктура за цялата мрежа, разработен с помощта на които могат да общуват обекти по мрежата. Една от технологиите за изграждане на разпределени приложения, наречени CORBA (Обща цел Искане Брокер архитектура - обобщена архитектура обект искане манипулатор). Това е система от инструкции за прехвърляне на съобщения между обекти. Друга технология, наречена RMI (Remote Метод Призив - дистанционно позоваването метод). Тази технология е разработена от Sun Microsystems и се поддържа от Java среда за програмиране (за повече подробности с езика Java, ще се въведе по-късно в тази глава.) Софтуерните разработчици, които използват среда за програмиране Java, като констатира, че RMI технологията е много полезна за създаване на обекти, които ще взаимодействат с други Java-обекти. CORBA технология често се използва за създаване на обекти в други езици за програмиране.
След като описва клас LaserClass, можем да твърдим, три вида на променливите Laserclass с оператор
LaserClass Laserl. Laser2. Laser3;
Имайте предвид, че същата конструкция се използва за описване на три числа X, Y и Z:
И двете от тези изказвания са направени от името на типа, както и списък на декларираните променливи. Разликата се състои в това, че определя на променливата х елемент, се създава по предварително определен образец на цяло число (предварително определен тип данни), докато елемент определя на променливата Laserl, генерирани съгласно модел определя като клас в програмата.
В C ++, в резултат на горното твърдение ще създаде три обекти от тип LaserClass и възлага на променливи Laserl, Laser2 и Laser3. Въпреки това, в Java и C # просто ще създаде променлива, която след това може да се присвои стойност. За да се създаде обект от тип LaserCl задника и я възлага на променлива Laserl, в следните езици ще трябва да използвате оператор
LaserClass Laserl = нов LaserClassO;
Това твърдение не само описва тип променлива Laserclass, но също така създава нов обект с помощта на шаблон Laserclass и го възлага на щедрите
не само описва типа на променливата х, но и определя нова променлива до 3.
Независимо от това дали, с вид на език, който се стремим да се създаде обект и да ги възлагат имена Laserl, Laser2 и Laser3, че можем да продължим нашата програма, като се обадите подходящите методи за тези обекти. Например, за да се изпълни метод обект Laserl огън, ще трябва да използвате оператора
И, за да изпълни обект Laser2 метод turnLeft, използвайте оператора
Преди да продължим, нека да разгледаме отношението на концепциите за класове и обекти. Класът представлява шаблон, върху която са създадени обекти: Един клас може да се използва за създаване на голям брой обекти. Често наричан инстанция на даден обект (например). Ето защо, в нашите компютърни игри имена Laserl, Laser2 и Laser3 LaserClass използва за обозначаване на случаите на класа.
След създаването на един обект трябва да попитате някои от неговите характеристики. Например, в нашата компютърна игра лазери могат да имат различен начален капацитет. Следователно, в променлива RemainingPower на например различни обекти трябва да се получават различни първоначалната стойност. Инициализира променливи са специални функции, които се наричат конструктори (конструктор). Когато създавате клас обект те се наричат автоматично. Конструкторът се определя в рамките на дефиницията на класа, а името му съвпада с името на класа, към който принадлежи.
По-подробно описание на LaserClass класа показани на Фиг. 5.23. Имайте предвид, че строителят се определя като метод с името LaserClass. Този метод определя RemainingPower например променлива стойност, която се предава към него като параметър. По този начин, при създаването на клас обект, този метод се изпълнява и RemainingPower променлива се дава стойността.
Действителните параметрите, използвани от дизайнера, обикновено се определят като списък от параметри в отчета за създаване на обект. Така, за да се създаде обект LaserClass два вида: една с името Laserl и първоначалната изхода 50 и друга с името Laser2 и първоначалната капацитет от 100, C ++ програмист пише:
LaserClass Laserl (50). Laser2 (100);
Java- и C # -programmisty за тази цел ще използвате оператори
LaserClass Laserl - нови LaserClass (50): LaserClass Laser2 = нови LaserClass (100);