JavaRush /Blog Jawa /Random-JV /Metode ing Jawa

Metode ing Jawa

Diterbitake ing grup
Ana siji prinsip menarik sing akeh wis krungu bab. Iki diarani "Divide and Conquer." Prinsip iki digunakake ing pirang-pirang bidang urip manungsa, contone, ing politik. Iki nuduhake divisi saka akeh bagean heterogen ing negara, nyebabake lan nggunakake permusuhan ing antarane bagean kasebut. Ing tembung liya: nggawe konflik antarane wong-wong sing duweni potensi ancaman kanggo kekuwatan. Nanging kita programer, supaya kita mung kasengsem ing interpretasi technical saka asas iki. Lan kaya mangkene: "Prinsip "Divide and Conquer" yaiku ngilangi masalah gedhe dadi masalah sing luwih cilik nganti dadi SD. Banjur sampeyan kudu ngrampungake kanthi urutan lan gabungke kabeh dadi siji sistem. Program iki kudu ngrampungake masalah sing diwenehake" Yaiku, sampeyan mung ngilangi masalah gedhe dadi masalah sing luwih cilik, sing ora dadi masalah kanggo sampeyan ngrampungake. Banjur sampeyan ngumpulake solusi dadi siji gedhe. Kanggo ngetutake prinsip sing prasaja lan migunani iki, pemrograman Java nggunakake metode. Metode ing Jawa - 1Contone, kita nggawe petinju robot. Penting kanggo kita yen dheweke obah kanthi apik, nindakake serangan sing akurat, lan uga nonton mungsuh kanggo nggoleki titik sing ringkih. Iku bakal kikuk kanggo nulis kabeh iki ing siji cara utama , ora iku? Yen kita njlèntrèhaké kabeh ing siji cara, iku bakal kaya iki:
метод main() {
// Описание действий шага вперед
подача напряжения в отдельные модули;
поднятие ноги;
перевод в другую точку;
поставить ногу;
перенести вес на другую ногу;
если (противникАтакует()) {
        	// Описание действий уклонения робота.
        	...
} еслиНет {
        	// Описание действий обманного атакующего удара.
        	...
}
// Описание действий шага назад
...
}
Apa yen kita kudu nggunakake langkah maju utawa nyepak ing papan liya ing program kasebut? Nerangake kabeh tumindak maneh? Ora pas. Ana akeh banget garis bola-bali sing gampang ilang. Kita kudu nyelehake katrangan babagan rincian tumindak ing modul sing kapisah, sing bakal nindakake langkah robot. Lan kita bisa nelpon cara ing siji baris. Kaya iki:
метод шагВперед() {
// Описание действий шага вперед
  	подача напряжения в отдельные модули;
  	поднятие ноги;
  	перевод в другую точку;
  	поставить ногу;
  	перенести вес на другую ногу;
}

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

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

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

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

метод main() {
	шагВперед();
	если (противникАтакует()) {
        	уклонение();
	} еслиНет {
  	  обманныйАтакующийУдар();
	}
	шагНазад();
}
Saiki kita wis misahake fungsi robot, uga cara utama () kompak lan cetha . Liyane saka cara uga bisa dipérang dadi fungsi sembarang, contone, deceptiveAttackingStrike bisa dipérang dadi cara deceptiveMovement , Leg gerakan , serangan . Lan dheweke uga ditugasake kanggo tugas sing luwih gampang supaya bisa entuk set dhasar. Oke, saiki ayo nulis kabeh kanthi apik ing wangun sing bakal ditampa dening Jawa.
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;
}
Aku ngerti yen kode iki bisa uga rada ora jelas kanggo sampeyan saiki, utamane sawetara tembung kaya void , bali lan liya-liyane. Aja cepet-cepet mbuwang tomat, aku bakal nerangake kabeh saiki. Gagasan umum paradigma "Divide and Conquer" kudu jelas kanggo sampeyan. Cara bakal mbantu kita babagan iki. Struktur umum deklarasi metode kaya ing ngisor iki:
модификатор_доступа возвращаемое_meaning Name_метода(принимаемые_параметры) {
   	//Тело метода
}

Akses modifier

Modifier akses yaiku sawetara tembung kunci: umum , pribadi , paket . Tembung-tembung kasebut nuduhake ruang lingkup metode. Aku bakal nerangake kanthi gampang: nganggo tembung iki, sampeyan bakal nuduhake panganan sing enak karo wong liya. Enak cara sampeyan. Yen iku pribadi , sampeyan ora nuduhake cara karo kelas liyane. Yen paket , sampeyan mung nuduhake kelas ing paket kasebut (kelas diklumpukake dadi paket tartamtu, sampeyan bakal sinau mengko). Inggih, umum nuduhake yen sampeyan kebecikan dhewe lan nuduhake suguhan (metode) sing enak karo kabeh program. Mergo iki. Sawise sawetara tingkat sampeyan bakal ngerti peran tembung iki luwih apik.

Nilai bali

Deleng conto ing ndhuwur: kabeh cara ditandhani nganggo tembung kunci sing ora sah , kajaba siji - isEnemyAttacked , sing ngasilake nilai boolean . Yen cara ditandhani ora sah , bisa uga ora ngasilake apa-apa. Cara iki mung nindakake sakumpulan tumindak lan mung. Saiki mbayar manungsa waé menyang cara utama . Cara-cara sing ngasilake roso sepi diarani kaya ngono, ing awak metode kasebut. Nanging metode isEnemyAttacked diarani ing kurung pernyataan yen . Amarga kasunyatan sing ngasilake nilai boolean, kita entuk kesempatan kanggo ora nggunakake variabel penengah, nanging nglebokake langsung. Ngasilake nilai ditindakake kanthi nggunakake tembung kunci bali . Yen metode ngasilake jinis int , kita bisa nelpon metode kasebut saka ekspresi apa wae:
public static int getNumber() {
 	    return 5;
}

public static void main(String[] args) {
    	int result = 5 + 6 + getNumber();
    	System.out.println(result);
}
Kesimpulan:
16
Cara getNumber ngasilake nilai int , supaya kita bisa nelpon saka ekspresi. Uga, cara kasebut bisa ngasilake jinis apa wae, kalebu sing digawe dhewe. Yen sampeyan nemtokake jinis bali kanggo cara, sampeyan kudu bali soko. Sampeyan ora bisa nulis kaya iki:
public static int findMaxNumber(int a, int b) {
 	if(a>b) {
 	    return a;
 	}
}
Compiler bakal scold sampeyan yen kondisi pisanan ketemu, sampeyan bali soko, nanging nalika kondisi kapindho ketemu, sampeyan ora.

Parameter lulus

Sampeyan bisa ngliwati paramèter menyang cara sing digunakake sajrone operasi kasebut. Conto paling primitif yaiku penjumlahan saka rong nomer. Nanging kita ora primitif, ta? Ayo njupuk conto liyane, cukup stereotypical. Ayo dadi ngomong kita duwe cara chef () - cook. Kita bisa ngliwati bahan sup kanggo metode iki ing blok parameter, lan minangka asil, cara iki ngasilake sup kanggo kita. Kaya iki:
public static void main(String[] args) {
    	String[] ingredients;
    	// Инициализация массива ингредиентов
    	Soup soup = chef(ingredients);

}

public static Soup chef(String[] ingredients) {
    	Soup soup = new Soup();
    	// Процесс варки супа
    	return soup;
}
(Ayo kita duwe kelas Soup sing wis digawe ) Ing metode utama, kita nggawe macem-macem bahan lan banjur "diwenehake menyang koki" (liwati menyang metode koki ). "Masak nggawe sup" lan banjur bali menyang kita minangka obyek saka kelas Sup . Kabeh iku prasaja banget. Sampeyan bisa ngliwati parameter apa wae, jinis primitif, obyek, array, lan liya-liyane menyang metode kasebut.

Nglewati paramèter kanthi referensi lan kanthi nilai

Ing basa pamrograman Jawa, paramèter apa wae diterusake menyang metode kanthi nilai. Nanging, mekanisme iki beda kanggo jinis primitif lan kanggo obyek. Yen sampeyan ngliwati sembarang jinis primitif menyang cara lan ngganti, iku ora bakal ngganti ing cara utama. Sampeyan mung ngliwati salinan nilai kasebut, lan variabel asli disimpen. Conto paling prasaja:
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;
	}
Kesimpulan:
sewelas
Nanging, ing kasus obyek, owah-owahan mengaruhi obyek asli:
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;
	}
}
Kesimpulan:
Wong pinter kita duwe IR 300 Wong pinter kita duwe IR 100
Kita duwe kelas WiseMan sing duwe properti iq . Lan rong cara sing ngontrol nilai lapangan iki. Ing cara utama kita nggawe obyek wiseMan , nyetel nilai iq kanggo 300 . Banjur kita ngliwati sage kita karo iq 300 menyang metode changeObject . Nanging ing metode iki dheweke dadi bodho. Kita nyetel nilai iq dadi 100. Banjur ing metode utama kita nyithak obyek kasebut. Sampeyan bisa ndeleng manawa ing metode changeObject kita manipulasi sage liyane ing variabel m . Nanging, kita ngowahi obyek asli kita. Kasunyatane yaiku obyek wiseMan ing metode utama lan obyek m ing metode changeObject iku wong wicaksana sing padha, lan referensi kanggo obyek kasebut disalin menyang metode minangka parameter. Elinga yen sampeyan ngowahi obyek kanthi cara individu.

Pungkasan, sawetara tembung babagan modifier statis

Umumé, sawetara tembung ora bakal ditindakake ing kene, nanging aku bakal nyoba. Cara biasa sing ora ditandhani karo modifier iki kalebu obyek kelas. Lan cara statis kalebu kelas kasebut. Cara konvensional bisa digunakake ing obyek individu. Deleng kelas WiseMan saka conto ing ndhuwur. Saben sage bakal duwe metode getIq lan setIq dhewe , amarga tingkat IQ saben wong beda-beda. Yen kita nambahake metode statis generateAWisePhrase menyang kelas iki , mula kita bisa nelpon metode kasebut tanpa obyek:
WiseMan.generateAWisePhrase();
Umumé, informasi iki cukup kanggo saiki, amarga sawetara ceramah bisa ditulis babagan statis . Tindakake sawetara aturan nalika nulis cara kanggo njaga supaya kode sampeyan:
  • Wenehi jeneng cara sampeyan supaya jelas apa sing ditindakake.
  • Coba aja nulis cara sing dawa banget. Dawane optimal yaiku 8-15 garis.
  • Jumlah paramèter cara ngirim ora ngluwihi 4-5.
  • Yen sampeyan duwe fungsi sing padha kaping pindho ing kode sampeyan, pikirake: bisa uga kudu digeneralisasi lan dilebokake ing cara sing kapisah?
Teknik iki bakal mbantu sampeyan nambah kinerja program lan, sing paling penting, nggawe kode luwih bisa diwaca.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION