شما می توانید با عضویت در انجمن پرسش و پاسخ درسمن هرگونه سوالی دارید را مطرح کنید


شی گرایی در زبان جاوا اسکریپت


شی گرایی در زبان جاوا اسکریپت
برای دانلود و دیدن آنلاین این درس نیاز است وارد سایت شوید. در صورت نداشتن حساب کاربری عضو شوید.

شی‌‍ گرایی در زبان برنامه نویسی جاوا اسکریپت

  • مبانی برنامه نویسی شی‌گرا (OOP)
  • تعریف کلاس و اعضای آن در جاوا اسکریپت
  • کپسوله سازی Encapsulation
  • تجمع Aggregation
  • ارث بری Inheritance
هدف ما از ایجاد یک برنامه این خواهد بود که تمام داده یا اطلاعات یک سیستم از بیرون وارد یک برنامه شود.
در برنامه نویسی به هر موجودیتی که دارای یک سری از ویژگی‌ها باشد(اشیاء، شی ) میگوییم که در یک برنامه ما نیاز داریم که اطلاعات اشیاء خارج از سیستم را وارد سیستم کنیم.
برای مثال در سیستم دانشگاهی نیاز داریم که اطلاعات دانشجو، مدرس، کارمندان، درس و.... را در سیستم ذخیره کنیم.
به همین منظور در زبان‌های برنامه نویسی مفهومی به نام شی‌گرایی ایجاد شد که باعث میشود با دید بهتری به اشیاء بیرون نگاه کنیم.
در واقع هر شی دارای یک‌سری از صفت‌ها، ویژگی ها است، برای مثال کتاب دارای صفت‌های نام کتاب، نام نویسنده، قیمت کتاب، دسته بندی کتاب، و ... دارد.
از دید دیگر هر شی میتواند یک‌سری از رفتار ها را انجام دهد که ما علاوه بر صفت‌ها باید بتوانیم رفتارهایشان در نظر بگیریم.
در واقع برای درج اطلاعات یک شی در سیستم، باید دو عملیات، تشخیص صفت‌ها و تشخیص رفتارهای یک شی را به درستی انجام دهیم، که در آخر هر دو را در قالب کلاس(class) به برنامه معرفی میشود.
 

تعریف کلاس و اعضای آن در جاوا اسکریپت

class چیست؟
Class در واقع یک قالب کلی است که نمونه‌ها واشیاء آن class از نوع آن تعریف میشوند.
در واقع اگر خواستیم یک شی را وارد سیستم کنیم باید یک نمونه class را برای آن شی طراحی کنیم.
برای بهتر فهمیدن این موضوع لازم است که با مثال برای شما توضیح دهیم،
برنامه را باز میکنیم، درون یک پوشه یک پیچ از نوع html ایجاد کرده و ساختار کلی پروژه را ایجاد میکنیم، داخل تگ script برای ساخت کلاس از کلمه کلیدی class استفاده کرده و با یک فاصله نام کلاس را نوشته و با یک علامت براکت({})  ابتدا و اتنهای کلاس را مشخص میکنیم.
        class نام کلاس{
           
        }
در کلاس‌ها هر چیزی که به عنوان متغییر تعریف کنیم به عنوان صفت میشناسیم و هر چیزی که به عنوان تابع تعریف کنیم به عنوان متد میشناسیم.
برای تعریف اعضای کلاس از یک متد آماده با نام constructor استفاده میکنیم، این متد آماده اولین تابع هایی هستد که داخل کلاس اجرا میشوند. در واقع در کلاس ها برای تعریف متد(تابع) نیازی به function نداریم.
            constructor(){
               
            }
تابع constructor اینگونه عمل میکند، که وقتی فراخوانی شود برای ما صفت‌های آن کلاس را تعریف کند.

برای مثال ما یک کلاس با نام person برای توضیحات بیشتر برای شما ایجاد میکنیم.

         class Person{
                    constructor(){
                    }
        }

 

حال کلاس person دارای  صفت‌های name، family، age است.
با استفاده از کلمه کلیدی This، صفت‌ها را به تعریف کرده که دارای مقدار ثابت هستند.
        class Person{
            constructor(){
                this.name="darsman"
                this.family=".com"
                this.age=5
            }
            fun1()
            {
                alert("Hello")
            }

           
        }


در گام بعدی ما میتوانیم در کلاس از تابع ها استفاده کنیم، به این صورت که نیازی به کلمه کلیدی function نیست.

            نام تابع(){
               
            }

 

در برنامه تابعی درست کردیم که برای ما کلمه Hello به صورت پیغام نمایش داده شود.
            fun1 () {
                alert ("Hello");
            }


حال در خارج از محدوده کلاس یک شی با هر نامی از کلاس person ایجاد میکنیم.

var نام متغییر=new نام کلاس();
مثال:
ver p1=new Person();

 

 
در واقع فقط به یک صورت میتوان به تمام اطلاعات یک کلاس دسترسی پیدا کرد که از آن کلاس یک شی ایجاد کنیم.
و میتوان به روش زیر به تمام اعضای کلاس دسترسی پیدا کرد.
console.log ( نام شی ساخته شده.نام اعضای کلاس );

 

مثال:
console.log (p1.name);

 

میتوان از کلاس چند شی با نام های متفاوت ایجاد کرد، ولی در این person که ما ایجاد کردیم صفت‌ها دارای مقدار ثابت هستند که شی p1  فقط مقدارهای ثابت کلاس را چاپ میکند.
در کلاس مدنظر، اگر که ما  constructor را  این گونه تعریف کنیم که در زمان ساخت شی مقدارهایی را دریافت کند، میتوان آن مقادیر را جایگزین مقدارهای ثابت صفت‌ها کرد.برای اینکه مقدارهای person ثابت نباشند میتوانیم در لحظه ساخت شی برای constructor ورودی دریافت کنیم و آنها را جایگزین name،family،age کنیم  که مقدار ثابت نداشته باشند.
        class Person {
            constructor (نام متغییر,f , a){
                this.name=n
                this.family=f
                this.age=a
            }
            fun1()
            {
                alert("Hello")
            }
        }


در زمان ایجاد شی از این کلاس ، متغییرهای n,f,a را دریافت میکند. و بجای اعضای این کلاس قرار میدهد.

         var p1=new Person("darsman",".com",10);
         console.log(p1.name);

 

نکته‌ای به وجود آمده این است که هر شی به اعضای خودش دسترسی دارد.
        class Person{
            fun1()
            {
                alert("Hello"+ this.name)
            }
        }
         var p1=new Person("darsman",".com",10);
         p1.fun1();

         var p2=new Person("ali","mohammadi",12)
         p2.fun1();
در واقع در بالا اول برای ما Hellodarsman نمایش داده میشود و دوم Helloali نمایش داده میشود و به این صورت که هر شی به نامی که برای او در ورودی ارسال میشود دسترسی دارد.
 

ارث بری Inheritance:

یک از موضوعاتی که در کلاس‌‌ها برای ما مهم است بحث Encapsulation یا کپسوله سازی است یا مخفی سازی اطلاعات یک کلاس از کلاس دیگراست.
اگر ما یک موجودیت مثل انسانها  را در سیستم دانشگاهی درنظر بگیریم، یک کلاس برای اساتید، یک کلاس برای کارمندان و یک کلاس برای دانشجویان خواهیم داشت که در هر کدام از کلاسها صفت‌های کامل آنها نوشته شده.
به این روش کار کردن قطعا افزونه کاری است.
این سه دسته از انسان ها در سیستم دانشگاهی دارای یک سری از صفت‌ها هستند برای مثال اگر دقت کرده باشیم هر کدام صفت‌های آدرس، شماره تلفن و... بین آنها مشترک است.
بهترین کار این است که یک کلاس جداگانه برای صفت‌های مشترک مانند شماره تلفن، آدرس، و... ایجاد کنیم و برای اساتید، کارمندها و دانشجو  کلاسهای خاص خوشان با صفت‌های خاص خودشان را جداگانه ایجاد میکنیم.
ولی در این بین خطایی وجود دارد که در سیستم دانشگاهی به همه اطلاعات دانشجو، اساتید، و... نیاز داریم ولی ما اطلاعات مشترک را در یک کلاس جداگانه قرار داده‌ایم.
تنها راهی که وجود دارد این خواهد بود که کلاس ها را با هم ارتباط دهیم که در این بین بحث ارث‌بری به وجود می‌آید.
منظور از ارث‌بری یعنی اینکه در سیستم یک کلاس به عنوان فرزند و کلاس دیگر به عنوان والد شناخته میشود، که کلاس فرزند میتواند به اطلاعات کلاس والد دسترسی پیدا کند.
حال برای اینکه یک کلاس‌ بتواند به اطلاعات کلاس دیگر دسترسی پیدا کند با استفاد از کلمه کلیدی extends این عملیات را اجرایی میکنیم به این صورت که بعد از این کلمه نام کلاسی که میخواهید به آن دسترسی داشته باشد را مینویسیم.
class نام کلاس extends نام کلاس‌والد{
            constructor(){
           
            }
        }

 

برای مثال دو کلاس دیگر با نام student و teacher ایجاد میکنیم. و آنها را با کلاس person که در بالا ایجاد کردیم ارتباط میدهیم که به اطلاعات کلاس person دسترسی پیدا کند.

        class student extends person{
            constructor(){
                this.studentid=120
            }
        }

        class teacher extends person{
            constructor(){
                this.teachercode=150
            }
        }

 

در این میان تنها مشکلی که وجود دارد این است که خود کلاس والد person دارای یک سری ورودی name,family,age است که باید تامین شوند، به همین منظور در کلاس فرزند یا در کلاسهایی میخواهید از کلاس person ارث ببرند با استفاده از کلمه کلیدی super ورودی‌های کلاس والد را تامین میکنیم.
        class student extends person{
            constructor(){
               super(“darsman”,”.com”,12)
                this.studentid=120
            }
        }

        class teacher extends person{
            constructor(){
                super(“java”,”script”,10)
                this.teachercode=150
            }
        }


برچسب ها :

تعریف کلاس در جاوا اسکریپت کپسوله سازی در جاوا اسکریپت تجمع در جاوا اسکریپت ارث بری در جاوا اسکریپت Inheritance در جاوا اسکریپت

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد .
برای ارسال نظر نیاز است وارد سایت شوید. در صورت نداشتن حساب کاربری عضو شوید.
17 جلسه برای دوره آموزش جاوا اسکریپت-مقدماتی تا متوسط

درس 1
مقدمه ای بر زبان برنامه نویسی جاوا اسکریپت
29 دقیقه / رایگان

درس 2
ساختار کلی برنامه در زبان جاوا اسکریپت
33 دقیقه / رایگان

درس 3
عملگرها در زبان جاوا اسکریپت
35 دقیقه / رایگان

درس 4
روشهای نمایش اطلاعات در خروجی در زبان جاوا اسکریپت
31 دقیقه / رایگان

درس 5
روشهای دریافت داده از ورودی و تغییر نوع داده در زبان جاوا اسکریپت
26 دقیقه / رایگان

درس 6
توابع و رویدادها در زبان جاوا اسکریپت
29 دقیقه / رایگان

درس 7
انواع رویدادها در زبان جاوا اسکریپت
42 دقیقه / رایگان

درس 8
دستورات کنترلی در زبان جاوا اسکریپت
25 دقیقه / رایگان

درس 9
حلقه های تکرار در زبان جاوا اسکریپت
20 دقیقه / رایگان

درس 10
اشیا و آرایه ها در زبان جاوا اسکریپت
41 دقیقه / رایگان

درس 11
شی گرایی در زبان جاوا اسکریپت
40 دقیقه / رایگان

درس 12
متد های کار با رشته ها و اعداد در زبان جاوا اسکریپت
35 دقیقه / رایگان

درس 13
متدهای کار با آرایه ها، تاریخ و زمان در جاوا اسکریپت
26 دقیقه / رایگان

درس 14
DOM در جاوا اسکریپت (قسمت اول)
33 دقیقه / رایگان

درس 15
DOM در جاوا اسکریپت (قسمت دوم)
25 دقیقه / رایگان

درس 16
BOM در جاوا اسکریپت (browser object model )
28 دقیقه / رایگان

درس 17
مدیریت خطا و استثنا در جاوا اسکریپت
27 دقیقه / رایگان

دوره آموزش جاوا اسکریپت-مقدماتی تا متوسط


تعداد جلسات 17 جلسه
مدت زمان 470 دقیقه
سطح مهارت مقدماتی تا متوسط
زبان فارسی
دانشجو 111 دانشجو
گواهی نامه ندارد
قیمت دوره : 0 تومان
درحال برگزاری
مهدی عباسی
مهدی عباسی

درباره مدرس :

مدیر‌ عامل‌ شرکت آریا‌ نرم‌‌ افزار دارنده مدرک کارشناسی‌ ارشد مهندسی کامپیوتر 12‌ سال سابقه تدریس دروس کامپیوتر را در دانشگاههای دولتی، آزاد، پیام‌نور ملایر، شهیدشمسی‌پور تهران و تدریس برنامه‌نویسی در انیستیتو ایزایران، مجتمع فنی و موسسه راه‌آینده تهران دارا میباشد و تا به حال راهنمایی انجمنهای علمی دانشگاه و صدها پروژه دانشجویی را برعهده داشته است. تخصص اصلی: با داشتن گواهی‌نامه‌های معتبر تدریس از انیستیتو‌ ایزایران، راه آینده‌تهران و سازمان‌فنی‌حرفه‌ای، تدریس و آموزش‌ دروس کامپیوتر، ‌برنامه‌نویسی کامپیوتر و کلاسهای کنکور کارشناسی و کارشناسی‌ارشد میباشد.همچنین تجربه داوری و نظارت مسابقات برنامه‌نویسی کشوری‌ACM را در سالهای متعدد داشته و تیم مورد رهبری ایشان در 3سال متوالی مقام اول مسابقات کشوری را از آن خود کرده است.ایشان مقالاتی در زمینه شبکه‌های کامپیوتری، تکنیک‌های وزارت دفاع و ... به ثبت رسانده و مشاور و کارشناس در طراحی و برنامه نویسی بیش از 50‌برنامه کاربردی تحت وب و ویندوز و موبایل میباشد. افتخارات دیگر:کسب مقام دوم ایده‌های برتر در مسابقات استارت‌آپ و بکند کشوری را نام برد.