آموزش برنامه نویسی پایتون بخش بیست و نهم


جدول تناوبی تحلیل های مکانی در GIS

معرفی هفت منبع داده اقلیمی رایگان جهانی

چرخش قطبی در مقابل چرخش خورشید آهنگ

آنالیز تصویر شئی گرا (OBIA)

تعامل انرژی در سنجش از دور : انعکاس، جذب و گسیل انرژی

معرفی 6 منبع رایگان داده های لیداری

آشنایی با SAR با استفاده از مثال

برنامه لندست : 50 سال آرشیو از تصاویر سطح زمین

دانلود رایگان نرم افزار ArcGIS Pro 2.8

ابر نقطه ای چیست ؟

انواع نقشه ها در سیستم اطلاعات جغرافیایی: 25 روش مختلف و جذاب برای نمایش داده های مکانی در GIS

تصحیحات اتمسفری در سنجش از دور چیست ؟

سیستم های تصویر نقشه چیست ؟ و چرا بعضا برای ما گمراه کننده هستند ؟

ژئودزی: ریاضیات مکان

گیرنده های GPS چگونه کار می کنند ؟ سه گانه سازی در مقابل مثلث بندی

مأموریت توپوگرافی رادار شاتل (SRTM)

چرا پنجره اتمسفری در علوم زمین دارای اهمیت است ؟

تصاویر ماهواره ای DigitalGlobe: وردویو(Worldview)، ژئوآی(GeoEye) و آیکونوس (IKONOS)

راهنمای طبقه بندی نزدیکترین همسایه در e-Cognition

نقشه های کروپلت – مقدمه ای بر طبقه بندی داده

تصاویر چند طیفی (Multi-spectral) در مقایسه با تصاویر ابر طیفی (Hyper-spectral)

فتوگرافی هوایی (Aerial Photography) در مقابل ارتوفوتوگرافی (Orthophotography)

راهنمای جامع لیدار (Light Detection and Ranging – LiDAR)

سنجش از دور چیست ؟

منابع داده GIS رایگان در سطح جهانی : داده های رستری و برداری

مقدمه ای بر سرویس های نقشه کشی تحت وب (WMS)

علم داده مکانی چیست ؟

تحلیل عوارض سه بعدی

ژئوانالیتیکس: آنالیز داده های مکانی حجیم

فرمت های داده در سیستم اطلاعات جغرافیایی بخش سوم

فرمت های داده در سیستم اطلاعات جغرافیایی بخش دوم

فرمت های GIS و پسوندهای داده مکانی بخش اول

آموزش برنامه نویسی پایتون بخش سی ام

انتشار نخستین تصاویر لندست 9 توسط سازمان هوا و فضای آمریکا (NASA)

آموزش برنامه نویسی پایتون بخش بیست و نهم

آموزش برنامه نویسی پایتون بخش بیست و هشتم

آموزش برنامه نویسی پایتون بخش بیست و هفتم

آموزش برنامه نویسی پایتون بخش بیست و ششم

آموزش برنامه نویسی پایتون بخش بیست و پنجم

معرفی سامانه WEB GIS
آموزش برنامه نویسی پایتون بخش بیست و نهم
کلاس و اشیاء در پایتون
مقدمه
برنامه نویسی شیء گرا (Object-oriented Programming) یا به طور مختصر OOP شما را قادر خواهد ساخت که نرم افزارهای بزرگ-مقیاس و رابط گرافیکی کاربر یا GUIs را به طور کارآمدی توسعه دهید. تا کنون شما می توانید بسیاری از مسایل را از طریق استفاده از حلقه ها، شرطی ها و توابع حل کنید. اما به هر حال این قابلیت ها برای توسعه رابط گرافیکی کاربر (GUI) و یا سیستم های نرم افزاری بزرگ مقیاس کفایت نمی کند. فرض کنید قصد دارید که یک رابط گرافیکی کاربر با GUI Application، همانند تصویر زیر را توسعه دهید، چطور آن را کدنویسی می کنید؟

تعریف کلا س ها برای اشیاء در پایتون
یک کلاس تعریف کننده خواص و رفتار اشیاء می باشد. اشیاء از کلاس ها ساخته می شوند. در این بخش به شما نشان خواهیم داد که چطور می توان در زبان برنامه نویسی پایتون کلاس های دلخواه ایجاد نمود. برنامه نویسی شیء گرا (OOP) شامل استفاده از اشیاء در ایجاد برنامه ها است. یک شیء نماینده یک شیء در دنیای واقعی است که به طور مشخص قابل تشخیص و تفکیک باشد. برای مثال یک دانش آموز، یک میز، دایره، یک دکمه و حتی وامی که از بانک دریافت می شود همگی به عنوان اشیاء شناخته می شوند. یک شیء دارای هویت، وضعیت و رفتار منحصر به فرد می باشد.
■ شناسه یک شیء در زبان برنامه نویسی پایتون همچون شماره امنیتی یک فرد می باشد. پایتون به صورت خودکار به هر شیء یک id یا شناسه منحصر به فرد اختصاص می دهد تا در زمان اجرای برنامه بتواند آن شیء را تشخیص دهد.
■وضعیت یا حالت یک شیء که به عنوان ویژگی ها یا خواص اشیاء نیز نامیده می شود، توسط متغیرها نمایش داده می شود، که به عنوان فیلد نیز نامیده می شود. شیء دایره برای نمونه دارای فیلدی به نام شعاع می باشد که یک ویژگی یا خصیصه ای است که یک دایره را پیکر بندی می نماید. شیء مربوط به یک چهار گوش، دارای فیلدی به نام width و height می باشد که ویژگی هایی هستند که یک چهارگوش را تعریف می کنند.
■پایتون از متدها برای تعریف رفتار اشیاء استفاده می کند. به این رفتارها بعضاً عملکرد نیز گفته می شود که توسط روش ها یا توابع پیاده سازی می گردد. در حقیقت یک شیء را ایجاد می کنید که عملکردی دارد و عملکرد این شیء از طریق متدها یا توابعی که در آن کلاس تعریف شده است، اعمال می گردد. برای مثال، شما می توانید متدی به نام getArea() و getPerimeter() را برای شیء دایره تعریف کنید. شیء دایره سپس می تواند متد getArea() را فراخوانی نموده تا مقدار مساحت دایره را برگرداند و از متد getPerimeter() استفاده کند تا محیط دایره محاسبه و برگردانده شود.
اشیایی که از یک نوع هستند، با استفاده از یک کلاس تعریف می شوند. رابطه بین کلاس ها و اشیاء شبیه رابطه ای است که بین دستورالعمل پخت کیک و خود کیک وجود دارد. شما می توانید از یک دستور العمل پخت به هر تعداد که می خواهید کیک درست کنید. کلاس های پایتون از متغیرها برای ذخیره سازی فیلدهای داده استفاده می کند و از طریق تعریف متدها، عملکردها یا رفتارها را پیاده سازی می نماید. یک کلاس به نوعی یک قرارداد یا گاهی اوقات نسخه پیش ساخته می باشد که تعیین می نماید که فیلدهای داده و متدهای یک شئی چطور باشند. یک شیء در حقیقت نمونه ای از یک کلاس می باشد و شما می توانید نمونه های بسیار زیاد و مختلفی از یک کلاس ایجاد کنید. ایجاد یک نمونه از یک کلاس را در مفاهبم مربوط به برنامه نویسی شیء گرا، نمونه سازی کلاس می نامند. واژه های شیء و نمونه، اغلب در زبان های برنامه نویسی با رویکرد شیء گرا به جای یکدیگر مورد استفاده قرار می گیرند. در صورتی که یک شیء نمونه ای از یک کلاس است ولی یک نمونه از یک کلاس یک شئی نیست. در شکل زیر کلاسی به نام Circle و سه شیء مربوط به آن نشان داده شده است.

تعریف کلاس در پایتون
علاوه بر استفاده از متغیرها برای ذخیره سازی فیلدهای داده و تعریف متدها، یک کلاس متد ویژه ای به نام متد سازنده یا __init__ را نیز ارائه می دهد. این متد، که به نام متد سازنده در ترمینولوژی برنامه نویسی شیء گرا شناخته می شود، برای ایجاد یک شیء جدید زمانی که نمونه سازی از کلاس انجام می گیرد، مورد استفاده قرار می گیرد. متد سازنده می تواند هر عملکردی را در بر داشته باشد اما متد سازنده برای ایجاد عملکردهای آغازین و ابتدایی همچون ایجاد یک فیلد داده جدید با مقادیر اولیه یا پیش فرض طراحی و تعبیه می شوند. پایتون از سینتکس زیر برای تعریف کلاس بهره می برد:
class ClassName:
initializer
methods
در کدهای زیر کلاس Circle تعریف شده است. اسم کلاس منتهی به کلید واژه class می شود که برای تعریف کلاس در پایتون مورد استفاده قرار می گیرد بعد از نام کلاس علامت کولن قرار داده می شود و در خطوط بعد یا احتساب یک سطح تورفتگی یا Indentation بدنه کلاس تکمیل می گردد. اولین متدی که به استفاده از سینتکس __init__ در درون کلاس تعریف می شود را به نام متد سازنده می نامند. این متد به عنوان متدهای ویژه در برنامه نویسی شئ گرا در پایتون شناخته می شود. توجه داشته باشید که قبل و بعد از init بایستی دو علامت underscore قرار دهید. همان طوری که در کدهای زیر مشاهده می شود، فیلد داده radius در بخش initializer یا در داخل متد سازنده ایجاد می شود. متدهای getPerimeter و getArea برای محاسبه و برگرداندان محیط و مساحت دایره ای با شعاع radius مورد استفاده قرار می گیرند. در اصل این دو متد رفتار یا عملکرد کلاس دایره را مدل سازی می کند.
1 import math
2
3 class Circle:
4 # Construct a circle object
5 def _ _init_ _(self, radius = 1):
6 self.radius = radius
7
8 def getPerimeter(self):
9 return 2 * self.radius * math.pi
10
11 def getArea(self):
12 return self.radius * self.radius * math.pi
13
14 def setRadius(self, radius):
15 self.radius = radius
نکته
استایل نامگذاری برای کلاس های کتابخانه های پایتون یکسان و ثابت نمی باشد. اما معمولاً اینگونه رایج است که اولین حرف از هر کلمه از نام کلاس، با حروف بزرگ نوشته می شود. برای مثال Circle، LinearEquation یا LinkedList بر این اساس نامگذاری های مناسبی هستند.
ایجاد اشیاء
هنگامی که یک کلاس تعریف می شود، می توانید از آن کلاس یک شیء با استفاده از یک سازنده درست کنید. سازنده کلاس دو کار انجام می دهد :
■ یک شیء جدید در حافظه موقت برای کلاس مربوطه ایجاد می نماید.
■ مد سازنده یا __init__ تعریف شده در کلاس را فراخوانی می نماید تا شیء ایجاد گردد.
تمامی متدها شامل متد سازنده، دارای پارامتر self می باشند. این پارامتر به تمامی اشیایی که آن متد را احضار می کنند، ارجاع داده می شود. پارامتر self در متد __init__ به صورت خودکار برای ارجاع به شیء تنظیم می گردد که این عملیات به محض ایجاد شیء انجام می گردد. شما به جای کلمه self می توانید از هر نام دیگری استفاده کنید اما مرسوم است که به صورت توافقی برنامه نویسان همگی از کلمه self استفاده کنند پس بهتر است شما نیز همین روال را دنبال کنید. سینتکس سازنده یا Constructor در زبان برنامه نویسی پایتون به صورت زیر می باشد:
ClassName(arguments)
شکل زیر نشان می دهد که چطور یک شیء، ایجاد شده و initialized می گردد. بعد از آنکه شیء ایجاد شد، self را می توان برای ارجاع به آن شیء مورد استفاده قرار داد.

آرگومان هایی که در هنگام ایجاد شیء وارد می شوند با پارامترهایی که در متد __init__ تعریف شده اند، منطبق می گردد بدون آنکه از self استفاده شود. برای مثال متد __init__ در خط 5 برنامه زیر به صورت __init__ (self,radius = 1) تعریف می گردد تا شیء دایره با شعاع 5 ایجاد گردد و برای ایجاد شیء دایره از سینتکس Circle(5) استفاده می شود. در این حالت ابتدا شیء Circle ایجاد شده و در حافظه موقت قرار می گیرد و سپس متد سازنده کلاس فراخوانی شده و مقدار شعاع دایره یا radius را برابر با 5 تنظیم می کند.
1 import math
2
3 class Circle:
4 # Construct a circle object
5 def _ _init_ _(self, radius = 1):
6 self.radius = radius
7
8 def getPerimeter(self):
9 return 2 * self.radius * math.pi
10
11 def getArea(self):
12 return self.radius * self.radius * math.pi
13
14 def setRadius(self, radius):
15 self.radius = radius

متد سازنده کلاس Circle دارای مقدار پیش فرض 1 برای radius می باشد. سازنده شیء زیر شیء دایره با radius پیش فرض برابر با 1 را ایجاد می کند.
Circle()
دسترسی به اعضای اشیاء
عضو شیء، مربوط به فیلدهای داده و متدها می شود. فیلدهای داده را به نام متغیرهای نمونه سازی شده کلاس نیز می نامند زیرا هر شیء دارای مقدار به خصوصی برای هر فیلد داده می باشد. متدها نیز به نام متدهای نمونه سازی شده نامیده می شوند زیرا یک متد توسط یک شیء نمونه سازی شده فراخوانی می گردد تا عملیاتی را همچون تغییر مقدار فیلد داده مربوط به شیء بر روی آن انجام دهد. برای دسترسی به فیلدهای داده یک شیء و فراخوانی متدهای مربوط به شیء نمونه سازی شده نیاز دارید که شیء را به یک متغیر انتساب دهید تا سپس بتوانید با استفاده از dot notation به آنها دسترسی داشته باشید. در زیر سینتکس این حالت نشان داد شده است:
objectRefVar = ClassName(arguments)
c1 = Circle(5)
c2 = Circle()
شما برای دسترسی به فیلدهای داده شیء نمونه سازی شده و متدهای آن می توانید از اپراتور dot استفاده کنید که به آن اپراتور دسترسی به اعضای شیء نیز گفته می شود. سینتکس مورد استفاده برای این کار به صورت زیر می باشد:
objectRefVar.datafield
objectRefVar.method(args)
برای مثال در کد زیر به فیلد داده radius در خط 3 دسترسی حاصل می شود و سپس متد getPerimeter در خط 5 و متد getArea در خط 7 فراخوانی می شوند. توجه داشته باشید که در خط 1 کلاس Circle که در ماژول Circle در یک فایل با فرمت py قرار دارد، به برنامه Import می گردد.
1 >>> from Circle import Circle
2 >>> c = Circle(5)
3 >>> c.radius
4 5
5 >>> c.getPerimeter()
6 31.41592653589793
7 >>> c.getArea()
8 78.53981633974483
9 >>>
نکته
معمولاً شما یک شیء از کلاس ایجاد می کنید و آن را به یک متغیر انتساب می دهید. سپس بعدتر شما قادر خواهید بود که از این متغیر برای ارجاع به آن شیء که شامل متدها و فیلدهای داده آن می باشد، استفاده کنید. بعضی اوقات یک شیء دیگر نیازی به ارجاع در آینده ندارد. در این موارد شما می توانید یک شیء بدون انتساب آن به یک متغیر را ایجاد کنید. به طوری که در شکل زیر مثالی از این حالت نشان داده شده است.
print (“Area is”, Circle(5).getArea ())
دستورات فوق شیء دایره را ایجاد نموده و متد getArea آن را فراخوان می نماید تا مساحت دایره برگشت داده شود. شیء که از این طریق ایجاد می گردد به نام شیء بی نام نامیده می شود.

آموزش برنامه نویسی پایتون بخش بیست و دوم

آموزش برنامه نویسی پایتون بخش دوم (شروع به کار با پایتون)

مدلسازی سایه-اندازی ساختمان ها در چشم اندازهای شهری در نرم افزار ArcGIS Pro

سیستم مختصات، واژه شناسی و مفاهیم در سیستم اطلاعات جغرافیایی

نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه زابل به شماره NH-41-1

برنامه نویسی پایتون بخش هشتم (انتساب چندگانه، ثابت ها، نوع-داده های عددی و اپراتورها)

نقشه متوسط دمای سطح زمین ایران (LST)

آموزش برنامه نویسی پایتون بخش هجدهم

آموزش برنامه نویسی پایتون بخش اول

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه سرآوان به شماره NG-41-2

نقشه تقسیمات سیاسی ایران

نرم افزار Terrain Morphometer V.1 برای اجرای آنالیز مورفومتری از مدل رقومی ارتفاعی

آموزش برنامه نویسی پایتون بخش نهم (نمادهای علمی، ارزیابی عبارات و اولویت اجرای اپراتورها)

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه پیوشک به شماره NG-40-12

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه جازموریان به شماره NG-40-4

آموزش ویدئویی تحلیل های هیدرولوژی در نرم افزار ArcGIS Pro

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه زاهدان به شماره NH-41-9

نقشه های زمین شناسی اسکن شده ایران در مقیاس 1:250000

دانلود و روش نصب نرم افزار Global Mapper 24

دانلود نرم افزار ArcGIS Pro 3.0.2

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه خاش به شماره NH-41-13

مقدمه ای بر برنامه نویسی کامپیوتر بخش سخت افزار

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش اول

آموزش برنامه نویسی پایتون بخش نوزدهم

نقشه های پوششی زمین شناسی ایران در مقیاس 1:100000 بخش سوم

معرفی و دانلود نرم افزار SAGA GIS

آموزش برنامه نویسی پایتون بخش شانزدهم

روش دانلود لایه های برداری لایه ها و عوارض شهری OSM

نرم افزار Coordinate to Map V.1 برای ترسیم عوارض برداری نقطه ای، خطی و پلیگونی بر اساس اطلاعات نقطه ای برداشت شده در عملیات نقشه برداری

برنامه نویسی پایتون بخش ششم (Identifiers)

کارگاه آموزشی تحلیل داده های رستری با استفاده از زبان برنامه نویسی پایتون

دانلود نقشه راههای ایران استایل 1

معرفی توانایی ها و ویژگی های ماهواره لندست 9

برنامه نویسی پایتون بخش هفتم (متغیرها، دستور انتساب و عبارات)

دانلود نرم افزار Arc GIS Pro 2.5 + روش نصب گام به گام

تبدیل مختصات در نرم افزار Global Mapper

دانلود نرم افزار Envi 5.6

دانلود نقشه های توپوگرافی اسکن شده با مقیاس 1/50000 برگه دریاچه هامون به شماره NH-41-5

نقشه های موقعیت سیاسی منطقه مطالعاتی بخش اول

دیدگاهتان را بنویسید