በዚህ ትምህርት በፓይቶን ውስጥ ስለ ክፍሎች ፣ ግንበኞች እና ውርስ እንማራለን።
እነዚህ ጽንሰ-ሐሳቦች የተለያዩ ዓይነቶችን ለመግለጽ በሚያስፈልግበት ትልቅ ፕሮግራም ውስጥ በጣም አስፈላጊ ናቸው.
ትምህርቶቹ
ክፍሎች በፕሮግራም አወጣጥ ውስጥ አስፈላጊ ናቸው እና ለፓይቶን የተለዩ አይደሉም። ሌሎች ብዙ የፕሮግራም ቋንቋዎች የክፍሎችን ሀሳብ ይደግፉ ። አዳዲስ የውሂብ ዓይነቶችን ለመወሰን ክፍሎችን እንጠቀማለን.
እስካሁን፣ በፓይዘን ውስጥ ስላሉት መሰረታዊ የውሂብ አይነቶች እንደ ቁጥሮች፣ ሕብረቁምፊዎች እና ቡሊያንስ ተምረናል። እነዚህ በፓይዘን ውስጥ መሰረታዊ ወይም ቀላል የመረጃ አይነቶች ናቸው። እንደ ዝርዝሮች እና መዝገበ ቃላት ያሉ ውስብስብ የውሂብ አይነቶችንም አይተናል።
እነዚህ ዓይነቶች እጅግ በጣም ጠቃሚ ቢሆኑም ሁልጊዜ ውስብስብ ጽንሰ-ሐሳቦችን ለመቅረጽ ጥቅም ላይ ሊውሉ አይችሉም. ለምሳሌ, ስለ አንድ ነጥብ ሀሳብ, ወይም የግዢ ጋሪ ያስቡ. የግዢ ጋሪ ቡሊያን ወይም ዝርዝር አይደለም። የተለየ አይነት ዳታ ነው። ስለዚህ እውነተኛ ጽንሰ-ሐሳቦችን ለመቅረጽ አዳዲስ ዓይነቶችን ለመግለጽ ክፍሎችን መጠቀም እንችላለን.
አሁን፣ ነጥብ የሚባል አዲስ የውሂብ አይነት እንገልፃለን። ይህ አዲስ ዓይነት ከዚህ በፊት እንዳረጋገጥነው ዘዴዎች ሊኖሩት ነው።
እንደዚህ ታደርጋለህ፡-
ክፍልን በ "ክፍል" ቁልፍ ቃል በመጠቀም እንጀምራለን እና ከዚያ በኋላ ለክፍላችን ስም እንሰጣለን.
class Point
አሁን፣ እዚህ የተጠቀምኩትን የስያሜ ስምምነት ተመልከት። የመጀመሪያውን ፊደል እዚህ ላይ አቢይ አድርጌዋለሁ፣ ፓስካል ስያሜ ኮንቬንሽን የምንለው ይህ ነው። ይህ ኮንቬንሽን ሁሌም ትንንሽ ሆሄያትን የምንጠቀምባቸው እና በርካታ ቃላትን ከስር ምልክት የምንለይበት ተለዋዋጮችን እና ተግባሮቻችንን ለመሰየም ከምንጠቀምበት የተለየ ነው። ክፍሎችን ስንሰይም ግን ብዙ ቃላትን ለመለያየት ግርዶሽ አንጠቀምም፣ የእያንዳንዱን ቃል የመጀመሪያ ፊደል አቢይ እናደርጋለን።
ክፍላችንን ከገለፅን በኋላ, ኮሎን ጥቅም ላይ ይውላል ይህም ማለት አሁን ብሎክ ይገለጻል.
class Point:
def move (self):
በዚህ እገዳ ውስጥ የነጥብ የሆኑትን ሁሉንም ተግባራት ወይም ዘዴዎች መግለፅ እንችላለን. ለምሳሌ፣ አንድን ነጥብ ለማንቀሳቀስ “አንቀሳቅስ” የሚባል ተግባር መግለፅ እንችላለን። ልክ ክፍት ቅንፍ ስንተይብ PyCharm በራስ ሰር "ራስን" እዚህ እንደሚጨምር ልብ ይበሉ። ይህ ልዩ ቁልፍ ቃል ነው እና በቅርቡ ወደዚህ ልመለስ። በተርሚናል ላይ “ተንቀሳቀስ”ን እናተም።
print("move")
እንደ “መሳል” ያለ ሌላ ዘዴ እንግለጽ እና በተርሚናል ላይ አትመው።
def draw(self):
print("draw")
የኛን “ነጥብ” ክፍል ፍቺ ጨርሰናል። በዚህ አዲስ ዓይነት, አዳዲስ ነገሮችን መፍጠር እንችላለን. አንድ ክፍል በዛ ሰማያዊ ንድፍ ላይ ተመስርተው ትክክለኛ ሁኔታዎች የሆኑትን ነገሮች ለመፍጠር ብሉፕሪምን ወይም አብነቱን በቀላሉ ይገልፃል። አንድን ነገር ለመፍጠር የክፍላችንን ስም እንጽፋለን እና ከዚያ ልክ እንደ ተግባር እንጠራዋለን። ይህ አዲስ ነገር ይፈጥራል እና ከዚያ ይመለሳል. ከዚያም ያንን ነገር በተለዋዋጭ ውስጥ ማከማቸት እንችላለን. ላሳይህ፡-
እዚህ ላይ ባለ ሶስት አቅጣጫዊ ነጥብ የሆነውን "ነጥብ1" ገልፀነዋል. ያንን ማየት ይችላሉ, በተርሚናል ላይ የግለሰብ መጋጠሚያዎችን ማተም እንችላለን.
በዚህ ነጥብ ሁለቱን ዘዴዎች "መሳል" እና "መንቀሳቀስ" ልንጠቀም እንችላለን.
ስለዚህ እንደገና ለማጠቃለል, አዳዲስ ዓይነቶችን ለመወሰን ክፍሎችን እንጠቀማለን እና እነዚህ ዓይነቶች በክፍሉ አካል ውስጥ የምንገልጻቸው ዘዴዎች ሊኖራቸው ይችላል. ክፍሎች በፕሮግራሞቻችን ውስጥ በማንኛውም ቦታ ልናስቀምጣቸው የምንችላቸው ባህሪያት ሊኖራቸው ይችላል.
ግንበኞች
እስካሁን ድረስ ክፍሎችን በመጠቀም አዳዲስ ዓይነቶችን እንዴት መፍጠር እንደሚቻል ተምረናል. አሁን በዚህ ትግበራ ላይ ትንሽ ችግር አለ. ክፍሎችን በመጠቀም የነጥብ ነገርን ያለ x ወይም y መጋጠሚያ መፍጠር እንችላለን እና ያ ተስማሚ አይደለም። ላሳይህ።
የ x መጋጠሚያውን ከማዘጋጀታችን በፊት ነጥብ እንፍጠር እና አትም. ፕሮግራማችንን ማስኬድ የባህሪ ስህተትን ያስከትላል።
የነጥብ ዕቃው x የሚባል ባህሪ የለውም ማለት ነው። አሁን ችግሩ የ x ወይም y መጋጠሚያዎች ሳይኖሩበት የነጥብ ነገር መኖር መቻል ነው። ስለ አንድ ነጥብ ስንነጋገር ይህ ነጥብ የት እንደሚገኝ ማወቅ ስለሚኖርብን ይህ ትርጉም አይሰጥም። ይህንን ችግር ለመፍታት, ገንቢ እንጠቀማለን. ገንቢ ማለት አንድ ነገር በሚፈጠርበት ጊዜ የሚጠራ ተግባር ነው።
ግንባታን እንዴት እንደምንጠቀም እነሆ። በመጀመሪያ፣ ከላይ ባለው ፕሮግራም የ x እና y መጋጠሚያዎች እሴቶችን እናሳልፍ።
point = Point(10, 20)
print(point.x)
አሁን, በዚህ ክፍል ውስጥ ኮንስትራክሽን የሚባል ልዩ ዘዴ መጨመር ያስፈልገናል. አገባቡም ይህን ይመስላል።
def __init__(self, x, y):
init
ለጀማሪ አጭር ነው፣ እና ይህ ተግባር ወይም አዲስ ነጥብ ነገር ሲፈጠር የሚጠራው ዘዴ ነው። x እና y የተጨመሩት ወዲያውኑ ነው። self
ሁለት ተጨማሪ መለኪያዎችን ለመጨመር.
ከዚያ በኋላ፣ x እና yን ወደ ተላለፉት እሴቶች ማለትም 10 እና 20 ካርታ ልንሰራላቸው ይገባል።
self.x = x
self.y = y
እኛ እንጠቀማለን self
የአሁኑን ነገር ለመጥቀስ እና ከዚያም የ x ባህሪን ወደ "x" ተግባር የተላለፈውን የ x ግቤት እናስቀምጣለን. በዚህ መንገድ, በመጠቀም init
ዘዴ, እቃዎቻችንን ማስጀመር እንችላለን. ይህ ዘዴ እንደ ገንቢ ተብሎ ይጠራል. ፕሮግራማችንን እናካሂድ።
አሁን፣ በኋላ የ x እና y መጋጠሚያዎችን መቀየር እንችላለን። x አስተባባሪውን እናዘምን፦
point = Point(10, 20)
point.x = 11
print(point.x)
አሁን፣ የ x መጋጠሚያው ወደ እሴት 11 ተዘምኗል።
መልመጃ
ለእርስዎ አስደሳች የአካል ብቃት እንቅስቃሴ ይኸውልዎ።
ሰው የሚባል አዲስ ዓይነት እንድትገልጹልኝ እፈልጋለሁ። እነዚህ "ሰው" እቃዎች "" ሊኖራቸው ይገባል.name
"ባህሪ እና"talk()
”ዘዴ።
ቀላል ስራ ነው እና ከሁለት ደቂቃዎች በላይ መውሰድ የለበትም.
መፍትሔ
ክፍሉን “ሰው”ን እንደሚከተለው በመግለጽ ይጀምሩ።
class Person:
self.name = name
ገንቢውን በኋላ እንገልፃለን. አሁን, "ሰው" የሚለውን ነገር መፍጠር እንችላለን. ዮሐንስ እንበለው።
john = Person("John Smith")
print(john.name)
john.talk()
አሁን ወደ ኮዱ የመጀመሪያ ክፍል ይሂዱ እና ገንቢ ይፍጠሩ።
def __init__(self, name):
የመጨረሻው ኮድ እንደዚህ ይመስላል
እንዲሁም የተቀረጹ ሕብረቁምፊዎችን እና ሌሎች ጽንሰ-ሐሳቦችን ከክፍል እና ከገንቢዎች ጋር በማጣመር መጠቀም ይችላሉ።
ውርስ
ውርስ ከክፍሎች ጋር የተያያዘ ሌላ ፅንሰ-ሀሳብ ሲሆን ይህም ኮድን እንደገና እንዲጠቀሙ ያስችልዎታል።
ይህንን ኮድ አስቡበት።
class Dog:
def walk(self):
print("walk")
የክፍል "ውሻ" በ "መራመድ" ዘዴ ፈጠርን. በዚህ ዘዴ፣ የእግር ጉዞ መልእክትን በቀላሉ በተርሚናል ላይ እያተምን ነው። እንበል፣ በእውነተኛ ፕሮግራም፣ እዚህ ከአንድ መስመር ይልቅ 10 የኮድ መስመሮች አሉ። ለወደፊቱ, የ "መራመድ" ዘዴን ለማግኘት ሌላ ክፍል ካስፈለገ, ያንን ሁሉ ኮድ መድገም አለብን. ይህ ተስማሚ አይደለም.
በፕሮግራም አወጣጥ ውስጥ፣ እራስህን አትድገም የሚል አጭር ነው DRY የሚባል መርህ አለን። ወደፊት አንድ ጊዜ እንበል፣ “የእግር ጉዞ” ዘዴችን ላይ ችግር እንዳለን እናያለን እና ይህን ዘዴ በሌሎች ብዙ ቦታዎች ደጋግመን ወይም ብናባዛው፣ ተመልሰን በመምጣት ይህንን በተባዛነው ቦታ ሁሉ ማስተካከል አለብን። ኮድ ስለዚህ በፕሮግራሚንግ ውስጥ አንድን ነገር ሁለት ጊዜ መወሰን የለብንም.
ይህንን ችግር ለመፍታት የተለያዩ መንገዶች አሉ ግን እዚህ ለጀማሪዎች ቀላል የሆነውን እና ውርስ ተብሎ የሚጠራውን እንማራለን ። በዚህ ሁኔታ፣ ሌላ ክፍል “አጥቢ አጥቢ” እንፈጥራለን እና “የእግር ጉዞ” ባህሪያችንን በዚያ ክፍል እንገልፃለን።
class Mammal:
def walk(self):
print("walk")
የኛን “አጥቢ አጥቢ” ክፍል ከገለፅን በኋላ ውርስን በመጠቀም የሚከተሉትን ባህሪዎች ማለፍ እንችላለን።
ሁለቱም የውሻ እና የድመት ክፍሎች በወላጆቻቸው ክፍል ውስጥ የተገለጹትን ሁሉንም የክፍል ዘዴዎች ይወርሳሉ። አሁን ለእንደዚህ አይነት ውሾች ልዩ ዘዴዎችን ማከል እንችላለን-
class Dog:
def bark(self):
print("bark")
መጠቅለል!
ይህ ሁሉ ስለ ክፍሎች፣ ግንባታ ሰሪዎች እና ቁሱን ከውርስ ጽንሰ-ሀሳቦች ጋር በክፍል ውስጥ እንደገና መጠቀም ነበር። አሁን ወደ ተከታታዮቻችን መጨረሻ ተቃርበናል። በዚህ ነጥብ በፓይዘን ውስጥ ጥሩ፣ የሚነበቡ እና አጭር ኮዶችን ማዘጋጀት መቻል አለቦት።
የሞጁሎችን እና ፓኬጆችን ጽንሰ-ሀሳብ በሚቀጥለው ትምህርት ውስጥ እንመለከታለን.
መልስ ይስጡ