JavaRush /Java Blog /Random-TK /Java usullary

Java usullary

Toparda çap edildi
Köpleriň eşiden bir gyzykly ýörelgesi bar. Oňa "Bölün we ýeň" diýilýär. Bu ýörelge adam durmuşynyň köp ugurlarynda, mysal üçin syýasatda ulanylýar. Bu ştatda köp sanly birmeňzeş bölekleriň bölünmegini aňladýar, bu bölekleriň arasynda duşmançylygy öjükdirýär we ulanýar. Başga sözler bilen aýdylanda: häkimiýete howp abandyrýanlaryň arasynda gapma-garşylyk dörediň. Weöne biz programmistler, şonuň üçin diňe bu ýörelgäniň tehniki düşündirilmegi bilen gyzyklanýarys. Bu şeýle bolýar: ““ Bölün we ýeň ”ýörelgesi, uly meseläni başlangyç bolýança kiçeltmek. Soňra olary yzygiderli çözmeli we hemme zady bir ulgama birleşdirmeli. Bu programma berlen meseläni çözmeli ”.agny, uly bir meseläni kiçijiklere bölýärsiňiz, bu siziň çözmegiňiz üçin kyn däl. Soň bolsa çözgüdi bir uly birine ýygnaýarsyňyz. Bu ýönekeý we peýdaly ýörelgäni ýerine ýetirmek üçin Java programmirleme usullary ulanylýar. Java-da usullar - 1Mysal üçin, robot boksçy döredýäris. Onuň gowy hereket etmegi, takyk zarba urmagy, şeýle hem gowşak ýerleri gözläp duşmana syn etmegi möhümdir. Bularyň hemmesini bir esasy usulda ýazmak oňaýsyz bolar , şeýlemi? Hemme zady bir usul bilen suratlandyrsak, şuňa meňzeş bir zat bolar:
метод main() {
// Описание действий шага вперед
подача напряжения в отдельные модули;
поднятие ноги;
перевод в другую точку;
поставить ногу;
перенести вес на другую ногу;
если (противникАтакует()) {
        	// Описание действий уклонения робота.
        	...
} еслиНет {
        	// Описание действий обманного атакующего удара.
        	...
}
// Описание действий шага назад
...
}
Öňe bir ädim ulanmaly ýa-da programmanyň başga bir ýerinde urmaly bolsa näme etmeli? Thehli hereketleri suratlandyryň? Gabat gelenok Lostitirmek aňsat bolan gaýtalanýan setirler gaty köp. Hereketiň jikme-jiklikleriniň düşündirişini robot ädimini ýerine ýetirjek aýratyn modulda ýerleşdirmeli. Usuly bir setirde atlandyryp bileris. Şuňa meňzeş bir zat:
метод шагВперед() {
// Описание действий шага вперед
  	подача напряжения в отдельные модули;
  	поднятие ноги;
  	перевод в другую точку;
  	поставить ногу;
  	перенести вес на другую ногу;
}

метод уклонение() {
  	// Действия для уклонения
  	...
}

метод обманныйАтакующийУдар() {
  	// Действия для удара
  	...
}

метод шагНазад() {
  	// Действия для шага назад
  	...
}

метод противникАтакует() {
	// Робот проверяет атакует ли противник
}

метод main() {
	шагВперед();
	если (противникАтакует()) {
        	уклонение();
	} еслиНет {
  	  обманныйАтакующийУдар();
	}
	шагНазад();
}
Indi robotyň işleýşini, şeýle hem ykjam we düşnükli esasy () usulyny aýyrdyk . Galan usullary hem islendik funksiýa bölmek bolar, mysal üçin, aldawly hüjüm hüjümi aldaw hereketi , aýak hereketi , hüjüm usullaryna bölünip bilner . Olara bolsa öz gezeginde başlangyç meseleleriň toplumyny almak üçin has ýönekeý meseleler berilýär. Bolýar, indi hemmesini Java-yň kabul etjek görnüşinde owadan ýazalyň.
public static void stepForward() {
  	    // Многострочный code, описывающий
  	    // действия робота для выполнения шага
  	    System.out.println("The robot takes a step forward");
}

public static void evasion() {
  	    // Действия для уклонения
  	    System.out.println("Robot shy of impact");
}

public static void deceptiveAttackBlow() {
  	    // Действия для удара
  	    System.out.println("The robot performs a deceptive strike");
}

public static void stepBack() {
  	    // Действия для шага назад
  	    System.out.println("The robot takes a step backwards");
}

public static void main(String[] args) {
    	stepForward();
    	if (isEnemyAttacked()) {
        		evasion();
    	} else {
  	    	deceptiveAttackBlow();
    	}
    	stepBack();
}

public static boolean isEnemyAttacked() {
    	// Метод проверяет, атакует ли враг. returns логическое meaning.
    	return true;
}
Bu koduň indi size birneme düşnüksiz bolup biljekdigine düşünýärin, esasanam boş , gaýdyp gelýän we ş.m. Pomidor zyňmaga howlukmaň, men indi hemme zady düşündirerin. “Bölün we ýeň” paradigmasynyň umumy pikiri size düşnükli bolmaly. Usullar bu meselede bize kömek eder. Usul beýannamalarynyň umumy gurluşy aşakdakylar:
модификатор_доступа возвращаемое_meaning Name_метода(принимаемые_параметры) {
   	//Тело метода
}

Giriş üýtgediji

Giriş modifikatory birnäçe açar söz: jemgyýetçilik , hususy , paket . Bu sözler usulyň gerimini görkezýär. Simplyönekeý düşündirerin: bu söz bilen beýlekiler bilen ýakymly paýlaşýan ýaly. Yummy - bu siziň usulyňyz. Şahsy bolsa , usuly beýleki synplar bilen paýlaşmaýarsyňyz. Bukja bolsa , diňe paketiň içindäki synplar bilen paýlaşýarsyňyz (sapaklar belli bir paketlere ýygnalýar, muny soň öwrenersiňiz). Köpçülik , özüňiziň hoşniýetlidigiňizi we tutuş programma bilen ýakymly tagam (usuly) paýlaşýandygyňyzy görkezýär. Şuňa meňzeş bir zat. Birnäçe derejeden soň bu sözleriň roluna has gowy düşünersiňiz.

Yza gaýtaryş

Aboveokardaky mysala serediň: bir usuldan başga ähli usullar boş açar söz bilen bellendi - isEnemyAttacked , ol bahany yzyna gaýtaryp berýär . Usul boş diýip bellenen bolsa , hiç zady yzyna gaýtaryp bilmez. Bu usul diňe hereketleriň toplumyny ýerine ýetirýär we hut şu. Indi esasy usula üns beriň . Boşlygy yzyna gaýtarýan usullara , usulyň bedeninde edil şonuň ýaly diýilýär. Emma isEnemyAttacked usuly if sözleminiň gabygynyň içinde diýilýär . Boolean bahasyny yzyna gaýtaryp berýändigi sebäpli, aralyk üýtgeýjini ulanman, gönüden-göni goýmak mümkinçiligini alýarys. Gymmatlygy yzyna gaýtarmak açar söz ulanyp bolýar . Eger bir usul int görnüşini yzyna gaýtarsa , usuly islendik aňlatmadan çagyryp bileris:
public static int getNumber() {
 	    return 5;
}

public static void main(String[] args) {
    	int result = 5 + 6 + getNumber();
    	System.out.println(result);
}
Netije:
16
GetNumber usuly int bahasyny yzyna gaýtaryp berýär , şonuň üçin ony aňlatmadan çagyryp bileris. Şeýle hem, usul, özüňiz döreden görnüşleri goşmak bilen, islendik görnüşi yzyna gaýtaryp biler. Usul üçin gaýdyp beriş görnüşini görkezen bolsaňyz, bir zady yzyna gaýtarmalysyňyz. Muny beýle ýazyp bilmersiňiz:
public static int findMaxNumber(int a, int b) {
 	if(a>b) {
 	    return a;
 	}
}
Düzüji, birinji şert ýerine ýetirilende bir zady yzyna gaýtaryp berjekdigiňizi, ýöne ikinji şert ýerine ýetirilende size jogap bermejekdigini aýdýar.

Geçýän parametrler

Parametrleri işleýän wagtynda ulanylýan usula geçirip bilersiňiz. Iň ýönekeý mysal, iki sanyň jemlenmegi. Weöne biz başlangyç däl, şeýlemi? Başga bir mysal alalyň, gaty stereotip. Usul aşpezimiz bar () - aşpez diýeliň . Çorbanyň düzümini parametr blokynda bu usula geçirip bileris we netijede bu usul çorbany bize gaýtaryp berýär. Şuňa meňzeş:
public static void main(String[] args) {
    	String[] ingredients;
    	// Инициализация массива ингредиентов
    	Soup soup = chef(ingredients);

}

public static Soup chef(String[] ingredients) {
    	Soup soup = new Soup();
    	// Процесс варки супа
    	return soup;
}
(Öň döredilen Çorba synpymyz bar diýeliň ) Esasy usulda, köp sanly ingredient döredýäris, soň bolsa "aşpeze berýäris" (aşpez usulyna geçiriň ) . “Aşpez çorbany ýasaýar” we soňra çorba synpynyň obýekti hökmünde bize gaýtaryp berýär . Hemme zat gaty ýönekeý. Usula islendik parametrleri, başlangyç görnüşleri, obýektleri, massiwleri we ş.m. geçirip bilersiňiz.

Parametrleri salgylanma we baha boýunça geçirmek

Java programmirleme dilinde islendik parametrler bahasy boýunça bir usula geçirilýär. Şeýle-de bolsa, bu mehanizm başlangyç görnüşler we jisimler üçin tapawutlanýar. Islendik başlangyç görnüşi bir usula geçirip, ony üýtgetseňiz, esasy usulda üýtgemez. Diňe bahanyň bir nusgasyny geçirdiňiz we asyl üýtgeýji saklandy. Iň ýönekeý mysal:
public static void main(String[] args) {
    	int x = 1;
    	System.out.println(x);
    	getNumber(x);
    	System.out.println(x);

	}

	public static void getNumber(int i) {
    	i = i + 100;
	}
Netije:
on bir
Şeýle-de bolsa, obýektler bolan ýagdaýynda üýtgeşmeler asyl obýekte täsir edýär:
public class Program
{
	public static void main(String[] args) {
    	WiseMan wiseMan = new WiseMan();
    	wiseMan.setIq(300);
    	System.out.println(wiseMan);
    	changeObject(wiseMan);
    	System.out.println(wiseMan);

	}

	public static void changeObject(WiseMan m) {
    	m.setIq(100);
	}
}

public class WiseMan {
	int iq;

	public void setIq(int iq) {
    	this.iq = iq;
	}

	public int getIq() {
    	return iq;
	}

	public String toString() {
    	return "Our wise man has an IQ "+iq;
	}
}
Netije:
Akyldarymyzda IR 300 bar Akyldarymyzda IR 100 bar
Iq häsiýeti bolan WiseMan synpymyz bar . Bu meýdanyň bahasyna gözegçilik edýän iki usul. Esasy usulda, “iq” bahasyny 300-e bellän “wiseMan” obýektini döredýäris . Soň bolsa akylymyzy iq 300 bilen ChangeObject usulyna geçirýäris , ýöne bu usulda samsyk bolýar. Iq bahasyny 100-e belledik. Soňra esasy usulda obýekti çap edýäris. ChangeObject usulynda m üýtgeýjisinde başga bir akja manipulýasiýa edýändigimizi görüp bilersiňiz . Şeýle-de bolsa, asyl obýektimizi üýtgedýäris. Hakykat, esasy usuldaky wiseMan obýekti we ChangeObject usulyndaky m obýekti şol bir akylly adam we obýekte salgylanma parametr hökmünde usula göçürilýär. Aýry-aýry usullarda obýekti redaktirläniňizde muny ýatda saklaň.

Ahyrynda, statiki üýtgediji hakda birnäçe söz

Umuman, bu ýerde birnäçe söz etmez, ýöne synanyşaryn. Bu üýtgediji bilen bellenmedik yzygiderli usullar synp obýektine degişlidir. Statik usullar synpyň özüne degişlidir . Aýry-aýry obýektlerde yzygiderli usullar ulanylyp bilner. WiseMan synpyna ýokardaky mysaldan serediň . Her bir akyldaryň öz getIq we setIq usullary bolar , sebäbi her kimiň IQ derejesi başga. Bu klasa statiki usuly generateAWisePhrase goşsak , şeýle usuly obýektsiz atlandyryp bileris:
WiseMan.generateAWisePhrase();
Umuman aýdanyňda, bu maglumat häzirlikçe ýeterlik, sebäbi statik hakda birnäçe leksiýa ýazylyp bilner . Koduňyzda tertibi saklamak üçin usul ýazylanda birnäçe düzgüne eýeriň:
  • Usullaryňyza manyly at beriň, olaryň edýänleri düşnükli bolar.
  • Gaty uzyn usullary ýazmazlyga synanyşyň. Iň amatly uzynlygy 8-15 setir.
  • Usul parametrleriniň sany 4-5-den geçmeli däldir.
  • Koduňyzda iki gezek şuňa meňzeş funksiýa bar bolsa, pikir ediň: belki ony umumylaşdyryp, aýratyn usulda goýup bilersiňiz?
Bu usullar, programmaňyzyň işleýşini gowulaşdyrmaga we iň esasysy koduňyzy has okalmagyna kömek eder.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION