نمایش نتایج 1 تا 8 از 8

نام تاپیک: کاربرد رابطه بین دو کلاس

  1. #1

    کاربرد رابطه بین دو کلاس

    بچه ها من یک مشکلی دارم و اونم اینه :
    فرض کنید دو کلاس داریم که باهم رابطه دارن.(یک نمونه از کلاس A در کلاس B ایجاد می کنیم) و ما در فرمی از شیء کلاس B استفاده می کنیم. در اینجا چه استفاده ای می تونیم از رابطه بین دو کلاس A و B کنیم؟ اگه لطف کنید مثال بزنید ممنون میشم.

  2. #2
    نقل قول نوشته شده توسط resident مشاهده تاپیک
    بچه ها من یک مشکلی دارم و اونم اینه :
    فرض کنید دو کلاس داریم که باهم رابطه دارن.(یک نمونه از کلاس A در کلاس B ایجاد می کنیم) و ما در فرمی از شیء کلاس B استفاده می کنیم. در اینجا چه استفاده ای می تونیم از رابطه بین دو کلاس A و B کنیم؟ اگه لطف کنید مثال بزنید ممنون میشم.
    دو قسمت مشخص شده در متن فوق هیچ ربطی به هم ندارن. یعنی صرف اینکه یک نمونه از یک کلاس در یک کلاس دیگه بسازیم دلیل بر این نیست که حتما رابطه خاصی بین اونا بر قراره.
    احتمالا منظور شما از این رابطه ، رابطه ارث بری هست.
    بحث ارث بری بسیار بحث مفصلی هست ولی به طور خلاصه اینکه یک کلاس می تونه به عنوان کلاس base برای 1 یا n تا کلاس دیگه قرار بگیره. (ارث بری چند گانه در سی شارپ support نمی شود. به دلیل مشکلاتی که ایجاد می کرد. ک هبحث در این مورد از حوصله این بحث خارج است)
    به عنوان مثال شما می خواین توی برنامتون پیاده سازی از ماشین ها و خواص اونا داشته باشین. خوب چیزی که مشخصه اینه که خیلی از خواص بین ماشین ها یکی هستند.
    به عنوان مثال همه ماشین ها رنگ دارند. موتور دارن و.....
    حالا دو سناریوی زیر را در نظر بگیرین
    اول : پیاده سازی تمام خواص برای هر ماشین. یعنی هم برای ماشین GLX ، هم برای سمند و ... بیایم و مثلا خاصیت رنگ را در هر دوی اونا تعریف کنیم.
    دوم : تمامی خواص مشترک را تحت یک آبجکت تعریف کنیم و تمامی کلاس های ماشین های مختلف این آبجکت را ازش ارث بری کنند.
    خوب معلومه که در کد اول افزونگی کد داریم در حالی که در سناریوی دوم این افزونگی از بین رفته در حالی که همون هدف براورده میشه
    این یک مثال بسیار ساده از ارث بری بود .. ارث بری یکی از بزرگترین شاه کار های برنامه نویسی oop هست..


    اما بعید می دونم که باز هم منظور شما ارث بری بوده چون خیلی بعیده که کسی وارد برنامه نویسی شده باشه و این مفاهیم به گوشش نخورده باشه یا حداقل یک آشنایی مختصری نداشته باشه با اونا .. اونم زبانی مثل C#‎

    مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
    مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084


    وب سایت : http://www.mkiani.ir
    پست الکترونیک : mkiani3000@gmail.com

    موفق و پیروز باشید.
    مهدی کیانی


  3. #3
    نقل قول نوشته شده توسط r.kiani مشاهده تاپیک
    اما بعید می دونم که باز هم منظور شما ارث بری بوده
    دقیقا.بنده هم منظورم ارث بری نبود.
    مگه در فاز تحلیل وقتی کلید یک کلاس رو در دیگری قرار میدیم نمی گیم این دو با هم رابطه دارن و در فاز پیاده سازی برای برقراری این ارتباط به جای قراردادن کلید ، یک شیء از کلاس در دیگری ایجاد میکنیم!!!!!!

    یعنی صرف اینکه یک نمونه از یک کلاس در یک کلاس دیگه بسازیم دلیل بر این نیست که حتما رابطه خاصی بین اونا بر قراره.
    اگه منظورم کلاسهایی که در فاز تحلیل در میاریم باشه ، نه کلاسهایی که خودمون اضافه می کنیم ، چی؟ اونوقت میشه گفت؟
    راستی منظورتون از رابطه خاص رابطه ای غیر از instance connection است؟

  4. #4
    VIP آواتار رضا عربلو
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    1,597
    هنگامیکه یک نمونه (Instance) از یک کلاس را در کلاس دیگری داشته باشیم به این نوع رابطه یک رابطه has-a و یا aggregation کفته می شود.
    برای مثال دو کلاس ماشین (Car) و رادیو (Radio) در نظر بگیرید به راحتی می توانید بگویید که "ماشین شما یک رادیو دارد"، خوب همانطور که تحت الفظی هم می گوید car has-a radio،
    و اما استفاده ای که از کلاس radio می توانید بکنید این است که برای encapsolation بهتر ، بهتر است آبجکت radio در کلاس car را بصورت private تعریف بکنید سپس برای کار با این رادیو متدهایی مد نظر خود را برای کار با این آبجکت رادیو، را expose کنید (مثلاً ()TurnOnRadio() , TurnOffRadio , ...)
    اگر Net. نمی دانید وارد نشوید.

  5. #5
    نقل قول نوشته شده توسط رضا عربلو مشاهده تاپیک
    هنگامیکه یک نمونه (Instance) از یک کلاس را در کلاس دیگری داشته باشیم به این نوع رابطه یک رابطه has-a و یا aggregation کفته می شود.
    برای مثال دو کلاس ماشین (Car) و رادیو (Radio) در نظر بگیرید به راحتی می توانید بگویید که "ماشین شما یک رادیو دارد"، خوب همانطور که تحت الفظی هم می گوید car has-a radio،
    و اما استفاده ای که از کلاس radio می توانید بکنید این است که برای encapsolation بهتر ، بهتر است آبجکت radio در کلاس car را بصورت private تعریف بکنید سپس برای کار با این رادیو متدهایی مد نظر خود را برای کار با این آبجکت رادیو، را expose کنید (مثلاً ()TurnOnRadio() , TurnOffRadio , ...)
    ولی من فکر می کنم فرقی در پیاده سازی روابط aggrigation و instancr connection نباشه. در هر دو مورد همین کار رو می کنیم(ایجاد یک نمونه (Instance) از یک کلاس در کلاس دیگری )

  6. #6
    کاربر دائمی آواتار Masoud_TB
    تاریخ عضویت
    آذر 1386
    محل زندگی
    Tehran
    پست
    165
    سلام
    وقتی کلاسی با کلاس دیگر رابطه داره به این ترتیب که یک متغییر از کلاس A داخل کلاس B قرار داده به این رابطه Association می گویند.

    وقتی کلاس Factor یک متغییر از کلاس Customer داخل خودش داره : Association

    وقتی کلاس University یک رابطه با Student داره و در نتیجه لیستی از دانشجو های یک دانشگاه رو داریم .در حالتی که کلاس University یک مفهوم کامل است (حتی بدون دانشجو) : Aggregiation

    و وقتی کلاس Factor و FactorItem رو داریم یعنی فاکتور بدون قلم فاکتور معنی ندارد آن وقت : Composition داریم.
    به تصویر زیر نگاه کن:
    عکس های ضمیمه عکس های ضمیمه

  7. #7
    VIP آواتار رضا عربلو
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    1,597

    Association, Aggregation, Composition

    When we have only one relationship between objects, that is called Association. Aggregation and Composition both are specialized form of Association. Composition is again specialize form of Aggregation.

    Association is a relationship where all object have their own lifecycle and there is no owner. Let’s take an example of Teacher and Student. Multiple students can associate with single teacher and single student can associate with multiple teachers but there is no ownership between the objects and both have their own lifecycle. Both can create and delete independently.

    Aggregation is a specialize form of Association where all object have their own lifecycle but there is ownership and child object can not belongs to another parent object. Let’s take an example of Department and teacher. A single teacher can not belongs to multiple departments, but if we delete the department teacher object will not destroy. We can think about “has-a” relationship.

    Composition is again specialize form of Aggregation and we can call this as a “death” relationship. It is a strong type of Aggregation. Child object dose not have their lifecycle and if parent object deletes all child object will also be deleted. Let’s take again an example of relationship between House and rooms. House can contain multiple rooms there is no independent life of room and any room can not belongs to two different house if we delete the house room will automatically delete. Let’s take another example relationship between Questions and options. Single questions can have multiple options and option can not belong to multiple questions. If we delete questions options will automatically delete.


  8. #8
    قصدم از مطرح کردن این سوال انواع روابط نیست. میدونید منظورم چی بود؟
    فرض کنید 2 کلاس پرسنل و عکس داریم و کلید کلاس پرسنل تو کلاس عکس است. حالا اگه فرمی داشته باشیم و بخواهیم مشخصات کارمند و عکسش رو از ورودی بگیریم ، تو اون فرم فقط باید یک آبجکت از کلاس عکس ایجاد کنیم و همه کارها(insert,…) رو با فیلدهای این کلاس انجام بدیم؟ مقدار کنترلهای ورودی مثل تکست باکس رو تو فیلدهای کلاس عکس بریزیم و بعد ازشون استفاده کنیم؟

    اگه ما تو کلاس عکس به یک یا چند فیلد از کلاس پرسنل نیاز داشته باشیم، مثلا به فیلد شماره پرسنلی که بگیم این عکس برای پرسنل شماره فلان است اونوقت همینکه یک آبجکت از کلاس پرسنل در عکس ایجاد کنیم کافیه یا اینکه باید مجددا کد پرسنلی رو در کلاس تصویر تعریف کنیم و تابع get,set رو براش بنویسیم؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •