سلام میخوام برنامه aircraft contorolرو با استفاده از الوی مدیاتور بنویسم کسی می تونه کمک کنه چطور باید پیاده کنم ؟
ممنون

- مهدی عادلی فر
- 36 ماه قبل
سلام به شما دوست عزیز
ابتدا یک توضیح در مورد این برنامه بدهید تا دوستانی که با این برنامه کار نکرده اند بتونن پاسخ شما رو بدهند.

- فاطمه30
- 36 ماه قبل
یک سناریو که هواپیماهای ورودی نیاز دارن به دقت با یکدیگر به دلایل ایمنی ارتباط برقرار می کنند. اون ها باید دائما موقعیت تمام هواپیماهای دیگر را بدانند، یعنی هر هواپیمایی نیاز به ارتباط با سایر هواپیماهای دیگر داره. حالا شما دارای 3 نوع هواپیما در مدل دامنه خود بوئینگ، ایرباس و فوکر در نظر بگیرید که هر نوع نیاز به برقراری ارتباط با دو نوع دیگر اینو می خوام با الگوی مدیاتور به زبان جاوا بنویسم اما نمی دونم چطوری باید باشه؟
همون شروعش مشکل دارم مدیاتورم چی باید باشه ؟ بعد باید برای هر نوع هواپیمایی یک کلاس جدا گانه در نظر بگیرم یعنی ؟ نمی فهمم الان مدیاتور باید چی کار کنه ، هواپیماها چی کار؟

- مهدی عادلی فر
- 36 ماه قبل
ببینید شما باید یک اینترفیس برای ارتباط هواپیماها تعریف کنید که متدهای ارتباطی در داخل اون تعریف شده باشه. حالا این اینترفیس پایه الگوی mediator شما هست. شما باید برای هر نوع هواپیما یک کلاس تعریف کنید که از اینترفیس mediator برای ارتباطات استفاده کنه. یعنی هر هواپیما بتونه به هواپیماهای دیگه پیام ارسال کنه و پیام از اونها دریافت کنه. بعد از آن باید یک کلاس مدیر یا manager پیاده سازی بکنید که کلاس های هواپیما بتونن از اون استفاده کنن و خودشون رو توی اون کلاس ثبت کنند و هروقت که خواستند به هواپیمایی پیام ارسال کنند به کلاس manager درخواست ارسال پیام به اون هواپیما رو بدهند. کلاس manger با استفاده از اینترفیسی که در هر هواپیما پیاده سازی شده متد ارسال رو صدا میزنه و پیام برای اون هواپیما ارسال میشه.

- فاطمه30
- 36 ماه قبل
سلام این کد همانطور که شما فرمودین نوشته شده اما وقتی اجرا میکنم کار نمیکنه؟ ممنون میشم اگه منو راهنمایی کنید
البته سینتکسای جاوا خیلی یادم نمونده شاید با سی شارپ دارم جا به جا می نویسم اما تنها اروری که میده اینه
Error: Could not find or load main class airtraffic.AirTraffic
کد برنامه:
import java.util .*; import java.math.*; import java.io.*; package airtraffic; public class airtraffic { public static void main(String[] args) { // TODO code application logic here IAirTrafficControl tower = new Tower(); Aircraft flight1 = new Airbus("AC159", tower); Aircraft flight2 = new Boeing("WS203", tower); Aircraft flight3 = new Fokker("AC602", tower); flight1.Altitude += 1000; } //base class for all colleagues called AirTrafiic public abstract class AirTrafficControl { private final IAirTrafficControl _atc; private int _currentAltitude; protected AirTrafficControl(string callSign, IAirTrafficControl atc) { _atc = atc; CallSign = callSign; _atc. RegisterATCUnderGuidance(this); } public abstract int Ceiling { get; } public string CallSign { get; private set; } public int Altitude { get { return _currentAltitude; } set { _currentAltitude = value; _atc.ReceiveATCLocation(this); } } public void Climb(int heightToClimb) { Altitude += heightToClimb; } public bool Equals(object obj) { if (obj.GetType() != this.GetType()) return false; var incoming = (AirTrafficControl)obj; return this.CallSign.Equals(incoming.CallSign); } public int GetHashCode() { return CallSign.GetHashCode(); } public void WarnOfAirspaceIntrusionBy(AirTrafficControl reportingAircraft) { //do something in response to the warning } } //************** Interface ************* public interface IAirTrafficControl { void ReceiveATCLocation(AirTrafficControl location); void RegisterATCUnderGuidance(AirTrafficControl aircraft); } // concrete types of aircraft or AirTrafficControl public class Boeing extends AirTrafficControl { public Boeing(string callSign, IAirTrafficControl atc) throws { super(callSign, atc); } public int Ceiling { get { return 33000; } } } //**************** public class Fokker extends AirTrafficControl { public Fokker(string callSign, IAirTrafficControl atc) throws { super(callSign, atc); } public int Ceiling { get { return 40000; } } } //********************* public class Airbus extends AirTrafficControl { public Airbus(string callSign, IAirTrafficControl atc) throws { super(callSign, atc); public int Ceiling { get { return 40000; } } } //************* public class Tower implements IAirTrafficControl { private final IList[AirTrafficControl] _aircraftUnderGuidance = new List[AirTrafficControl](); public void ReceiveAircraftLocation(AirTrafficControl reportingAircraft) { foreach (AirTrafficControl currentAircraftUnderGuidance in _aircraftUnderGuidance Where(x => x != reportingAircraft)) { if (Math.abs(currentAircraftUnderGuidance.Altitude - reportingAircraft.Altitude) < 1000) { reportingAircraft.Climb(1000); //communicate to the class currentAircraftUnderGuidance.WarnOfAirspaceIntrusionBy(reportingAircraft); } } } public void RegisterATCUnderGuidance(AirTrafficControl aircraft) { if (!_RegisterATCUnderGuidance.Contains(aircraft)) { _RegisterATCUnderGuidance.Add(aircraft); } } } }//end class AirTraffic

- فاطمه30
- 36 ماه قبل
لطفا هر کی میتونه سریعتر جواب منو بده خیلی فوریه باید بدم استادمون:(((

- مهدی عادلی فر
- 36 ماه قبل
سلام خطایی که به شما میده اینه که تابع main رو نمی تونه پیدا کنه که از طریق اون بتونه برنامه رو اجرا کنه توی جاوا شما باید کلاس هایی رو که به صورت پابلیک تعریف می کنید توی فایل جداگانه باشه.