AOP vs OOP
AOP (Aspect-oriented programming) ба OOP (Object-oriented programming) нь програмчлалын хоёр парадигм юм. Програмчлалын парадигм нь компьютерийн програмчлалын үндсэн хэв маяг юм. Програмчлалын парадигмууд нь програмын элемент бүрийг хэрхэн төлөөлөх, асуудлыг шийдвэрлэх алхам бүрийг хэрхэн тодорхойлох зэргээр ялгаатай байдаг. Нэрнээс нь харахад OOP нь бодит ертөнцийн объектууд болон тэдгээрийн зан төлөвийг ашиглан асуудлуудыг илэрхийлэхэд анхаарлаа төвлөрүүлдэг бол AOP нь огтлолцсон асуудлуудыг тусад нь ангилахын тулд програмуудыг задлахад анхаардаг.
AOP гэж юу вэ?
AOP нь программчлалын парадигм бөгөөд модулийг нэмэгдүүлэхийн тулд програмыг олон талбарыг хамарсан үйл ажиллагааны нэгдмэл талбарт (санаа зовоосон асуудал гэж нэрлэдэг) хуваахыг хэлнэ. Өвөрмөц аж ахуйн нэгжүүдэд санаа зовоосон асуудлуудыг бүлэглэх, багтаахын тулд хийсвэрлэх (анги, арга гэх мэт) дэмжлэгийг бусад олон програмчлалын парадигмуудад өгдөг. Гэхдээ системд нэвтэрсэн хэсэг бүр мод бэлтгэх стратегиас хамаардаг тул санаа зовоосон асуудлууд ("Бүртгэл" гэх мэт) нь хөндлөн огтлолцсон асуудлын жишээ юм. Бүх AOP хэрэгжилтийн гол зорилго нь нэг байршилд бүх санаа зовоосон асуудлыг тусгах тохиромжтой хөндлөн огтлолын илэрхийлэлтэй байх явдал юм.
OOP гэж юу вэ?
OOP-д шийдвэрлэх ёстой асуудлын талаар бодит ертөнцийн элементүүдээр бодож, асуудлыг объект, тэдгээрийн зан төлөвөөр илэрхийлэхэд гол анхаарлаа хандуулдаг. Ангиуд нь бодит ертөнцийн объектуудын хийсвэр дүрслэлийг дүрсэлдэг. Ангиуд нь ижил төстэй зүйлс эсвэл нэгтгэж болох зүйлсийг цуглуулдаг зураг төсөл эсвэл загвартай адил юм. Ангиуд нь шинж чанарууд гэж нэрлэгддэг шинж чанартай байдаг. Шинж чанаруудыг глобал болон жишээ хувьсагч болгон хэрэгжүүлдэг. Ангиудын аргууд нь эдгээр ангиудын зан төлөвийг илэрхийлдэг эсвэл тодорхойлдог. Ангиудын арга, шинж чанаруудыг ангийн гишүүд гэж нэрлэдэг. Ангийн жишээг объект гэж нэрлэдэг. Тиймээс объект нь бодит ертөнцийн зарим объекттой төстэй өгөгдлийн бүтэц юм.
Өгөгдлийн хийсвэрлэл, Инкапсуляция, Полиморфизм, Мессеж, Модульчлал, Өв залгамжлал зэрэг хэд хэдэн чухал OOP ойлголтууд байдаг. Ихэвчлэн атрибутуудыг хувийн болгохын зэрэгцээ тэдгээр шинж чанаруудад хандахад ашиглаж болох нийтийн аргуудыг бий болгосноор капсулжуулалтыг хийдэг. Өв залгамжлал нь хэрэглэгчдэд бусад ангиас (супер анги гэж нэрлэгддэг) ангиудыг (дэд анги гэж нэрлэдэг) өргөтгөх боломжийг олгодог. Полиморфизм нь програмистад тухайн ангийн объектыг супер ангийн объектын оронд орлуулах боломжийг олгодог. Дүрмээр бол асуудлын тодорхойлолтод байгаа нэр үг нь програмын анги болж хувирдаг. Үүний нэгэн адил үйл үг нь арга болдог. Хамгийн алдартай OOP хэлнүүдийн зарим нь Java болон C юм.
AOP болон OOP хоёрын ялгаа юу вэ?
OOP болон AOP-ийн гол ялгаа нь OOP-ийн гол зорилго нь програмчлалын даалгаврыг өгөгдөл, аргуудыг багтаасан объект болгон задлахад оршдог бол AOP-ийн гол зорилго нь хөтөлбөрийг хөндлөн огтлолцох асуудалд задлахад оршино.. Үнэн хэрэгтээ, AOP нь OOP парадигмаас үүссэн учраас OOP-ийн өрсөлдөгч биш юм. AOP нь цөөн хэдэн асуудлыг шийдвэрлэх замаар OOP-ийг өргөжүүлдэг. AOP нь хөндлөн огтлолцсон асуудлуудыг (харгалзах OOP хэрэгжилтийн хэд хэдэн газар тараагдсан байж магадгүй) нэг дор хэрэгжүүлэх нарийн аргуудыг танилцуулж байна. Тиймээс AOP нь програмыг илүү цэвэрхэн, илүү чөлөөтэй холбодог.