ጃቫ ኣብ ሞያይ ዝተማሃርክዎ ናይ መጀመርታ ቋንቋ እዩ። ኣቃውምኡ ኣብተን ቀዳሞት ዓመታት ንኣምር ፕሮግራሚንግ ኣብ ምርዳእ ዝነበርኩሉ እዋን መሰረታዊ እዩ። ካልኦት ሓያሎ ቋንቋታት ኣዝዩ ዝተፈላለየ ኣቀራርባ ዘለዎም ድሕሪ ምሕላፈይ፡ ኣረኣእያይ ኣስፊሐዮ ኣለኹ። ሎሚ፡ ብዛዕባ ውርሻ ዝብል ሓሳብ ከስተንትነሉ ደልየ ኣለኹ .
ኣብ ጃቫ፡ ሓሳብ ውርሻ ምስቲ ንኡስ ምጽሓፍ ዝብል ኣምር ብጽኑዕ ዝተኣሳሰር እዩ። ንኡስ ምጽሓፍ ምትግባር ናይ IS A ዝምድና እዩ። ንኣብነት ክፍሊ Rabbit
ንኡስ ዓይነት ናይ Mammal
ክፍሊ እዩ። ካብዚ ንደሓር፡ ሓደ Rabbit
ኢንስታንስ ኩሉ ባህርያት ናይ ሓደ Mammal
ኣለዎ : ነቲ ባህሪ ይወርሶ።
በዚ ምኽንያት ድማ ሓደ ሜላ Mammal
መለክዒ ክጽውዕ ከሎ Rabbit
ኢንስታንስ ክትሓልፍ ትኽእል ወይ ድማ ሓደ ሜላ ሪተርን ዓይነት Mammal
ክኸውን ከሎ Rabbit
ኢንስታንስ ክትመልስ ትኽእል። ጃቫ፡ .ኔት ወይ ብርሑቕ ተመሳሳሊ ዝኾነ ነገር ተማሂርካ እንተኾንካ፡ ውርሻ ከምኡ ኢኻ ትርእዮ፡ እቲ ሓድሽ ንቡር ድማ ይኸውን።
ግሉጽ ውርሻ ’ ዩ።
class Animal { void feed(); } class Rabbit extends Animal { //1 }
Rabbit
IS A
Animal
, feed()
መጀመርታ ንጎ ምስ ረኣኹዋ፡ ገና ውርሻ እናሃበት ንኡስ ምጽሓፍ ዘይምህላዋ ኣገሪሙኒ። Go ንኣንጭዋ ምጽሓፍ ይጥቀም፤
ኣንጭዋ ትመስል፡ ከም ኣንጭዋ ትሕንብስ፡ ከም ኣንጭዋ ድማ ትሕንክስ እንተኾይና፡ ምናልባት ከምኡ ክትከውን ትኽእል እያ።
ሓደ Go struct
ከም መተሓላለፊ ተመሳሳሊ ተግባራት እንተድኣ ኣተግቢሩ ፡ ብዘይተሓበረ መንገዲ ነቲ መተሓላለፊ የተግብሮ ።
type Animal interface { feed() //1 } type Rabbit struct { } func (rabbit Rabbit) feed() { //2 // feeds }
Animal
ክምገብ ይኽእል እዩ።Rabbit
ከም መለክዒ ዝወስድ feed()
function ስለዘሎ Rabbit
Animal
የተግብር
ንጎ ብናይ ጌጋ ኣተሓሕዛ ኣቀራርባኣ ኣይፈትዎን እየ፡ ብዛዕባ ስዉር ኣተገባብራ ግን ክልተ ኣተሓሳስባ ነይሩኒ። ብሓደ ወገን ሓድሽ ኣምር ምዃኑ ተረዲኡኒ፣ ክፉት ኣእምሮ ክኸውን ድማ ፈቲነ፤ ብኻልእ ወገን ድማ ነገራት ኩሉ ግዜ ካብ ስዉር ንላዕሊ ብግልጺ ዝሓሸ ይመስለኒ፡ እንተስ ኣብ ምምዕባል ሶፍትዌር ይኹን ኣብ ሓቀኛ ህይወት።
ፓይቶን ንውርሻ ብዝምልከት ዝፈልጦ ዝያዳ መሳጢ ቋንቋ እዩ።
ንኡስ ዓይነትን ዓይነት መሰረት ዝገበረ ውርሻን ኣብ ፓይቶን ካብ ዝምስረት ኣትሒዙ ጸኒሑ እዩ።
class Animal: def feed(self): #1 pass #2 class Rabbit(Animal): #3 pass
Animal
ክምገብ ይኽእል እዩ።Rabbit
IS A
Animal
, feed()
ኣብዚ መዳይ ፓይቶን ብመንጽር ውርሻ ከም ጃቫ እዩ ዝሰርሕ። ፓይቶን ኣንጭዋ ምጽሓፍ እውን የቕርብ እዩ፣ እዚ ድማ ከም ማጂክ ሜላታት ገሊጸዮ . ንኣብነት ንሓደ ነገር ተደጋጋሚ ንምግባር ፣ ንኣብነት ፣ ተደጋጋሚ ክመልስ ዝኽእል ፣ __iter__()
ን __next__()
ን ጥራይ ኢኻ ከተተግብር ዘለካ :
class SingleValueIterable(): done = False def __init__(self, value): self.value = value def __iter__(self): #1 return self def __next__(self): #1 if self.done: raise StopIteration else: self.done = True return self.value svi = SingleValueIterable(5) sviter = iter(svi) #2 for x in sviter: print(x) #3
Iterator
ምፍጣር - ፓይቶን ከመይ ከም ዝገብር ይፈልጥ እዩ ካብ ንሕና ኣብ ላዕሊ ዝተጠቕሱ ሜላታት ካብ ምትግባር ኣትሒዝና።5
ናይዚ ናይ ኣንጭዋ ምጽሓፍ ኣገባብ ጸገም፡ ንናይ ፓይቶን ኣቐዲሙ ዝተነጸረ ናይ ስሕበት ሜላታት ጥራይ ዝሰርሕ ምዃኑ እዩ። ሳልሳይ ኣካል ብዘይተሓበረ መንገዲ ክወርሶ ዝኽእል ክፍሊ ክትህብ እንተደሊኻኸ?
class Animal: def feed(): pass class Rabbit: def feed(): pass
ኣብዚ ኣብ ላዕሊ ዘሎ ቁንጣሮ ጽሑፍ Rabbit
is not an Animal
, ኣዝዩ ዘሕዝነና እዩ። PEP 544 ኣእቱ፣ ፕሮቶኮላት: ቅርጻዊ ንኡስ ምጽሓፍ (ስታትቲክ ኣንጭዋ ምጽሓፍ) ዝብል ኣርእስቲ ዘለዎ። ፒኢፒ ንክፍልታትና ናይ ስሕበት ሜላታት ምግላጽ ዘይከኣል ይፈትሕ። ቀሊል Protocol
ክፍሊ ይገልጽ: ካብኡ ምስ ወረስካዮ፡ ኣብቲ ክፍሊ ዝተገልጹ ሜላታት ንኣንጭዋ ምጽሓፍ ብቑዓት ይኾኑ፡ ስለዚ ድማ - ስታትቲክ ምጽሓፍ ኣንጭዋ ዝብል ስም ይወሃቦ።
from typing import Protocol class Animal(Protocol): #1 def feed(): #2 pass class Rabbit: def feed(): #2 pass class VenusFlytrap: def feed(): #2 pass
Protocol
ምውራስAnimal
is a Protocol
ስለ ዝኾነ፡ ዝኾነ feed()
ዝገልጽ ክፍሊ፡ ብጽቡቕ ይኹን ብሕማቕ Animal
ይኸውን።ኣብ ነገራት ዝቐንዐ ፕሮግራሚንግ፡ ውርሻን ንኡስ ምጽሓፍን ከከምቲ እትመሃሮ ቀዳማይ ቋንቋ፡ ናብ ካልኦት ቋንቋታት ዘይትርጎም ፍሉይ ትርጉማት ክህልዎም ይኽእል። ጃቫ ንነብሱ ከም Object-Oriented language ይገልጽን ምሉእ ፓኬጅ የቕርብን። Go ቋንቋ OO ኣይኮነን፡ ግን ሕጂ'ውን ብመንገዲ ምጽሓፍ ኣንጭዋ ንኡስ ምጽሓፍ የቕርብ። ፓይቶን ግሉጽን ዘይግሉጽን ውርሻ የቕርብ ግን መተሓላለፊ የብሉን።
ሓድሽ ቋንቋ ፕሮግራሚንግ ምስቲ ድሮ እትፈልጦ (ቋንቋታት) ብምንጽጻር ኢኻ ትመሃር። ናይ ሓደ ቋንቋ ባህርያት ምፍላጥ ኣብ ዕላማኻ ቋንቋ ኢዲዮማቲክ ኮድ ንምጽሓፍ ቁልፊ እዩ። ኣብ እትፈልጦም ቋንቋታትካ ዘይርከቡ ባህርያት ተላልዮም: ብዛዕባ ፕሮግራሚንግ ብሓፈሻ ዘለካ ርድኢት ከስፍሑ እዮም።
ካብዚ ንላዕሊ ንኺድ፤
ፈለማ ኣብ A Java Geek ብዕለት 26 ጥሪ 2025 ዝተሓትመት