Өв залгамжлал ба контейнер хоорондын ялгаа

Өв залгамжлал ба контейнер хоорондын ялгаа
Өв залгамжлал ба контейнер хоорондын ялгаа

Видео: Өв залгамжлал ба контейнер хоорондын ялгаа

Видео: Өв залгамжлал ба контейнер хоорондын ялгаа
Видео: Происхождение литературного шастраджендры Хайюнинграт Пангруватинг Дию | Секрет Састройендро 2024, Арваннэгдүгээр
Anonim

Өв залгамжлал ба Контейнерт

Өв залгамжлал ба Контейнер нь OOP (Объект хандалтат програмчлалын жишээ: C++) -д байдаг хоёр чухал ойлголт юм. Энгийнээр хэлбэл, Контейнер болон Өв залгамжлал хоёулаа ангид нэмэлт шинж чанар эсвэл зан төлөвийг хангах асуудлыг шийддэг. Өв залгамжлал гэдэг нь тухайн анги нь эцэг ангиасаа шинж чанар, зан төлөвийг нь өргөтгөх замаар өвлөн авах чадварыг хэлнэ. Нөгөө талаас, Контейнер нь анги өөр ангиллын объектуудыг гишүүн өгөгдөл болгон агуулж байх чадвар юм.

Удамшил гэж юу вэ?

Дээр дурьдсанчлан удамшил гэдэг нь тухайн анги нь эцэг ангиасаа шинж чанар, зан төлөвийг нь өргөтгөх замаар өвлөн авах чадварыг хэлнэ. Өв залгамжлал нь үндсэндээ шинээр тодорхойлсон ангиар одоо байгаа ангийн шинж чанар, зан төлөвийг өргөтгөх замаар кодыг дахин ашиглах боломжийг олгодог. Хэрэв А анги В өргөтгөлтэй бол В ангиллыг эцэг анги (эсвэл супер анги), А ангиллыг хүүхэд анги (эсвэл үүссэн анги/дэд анги) гэж нэрлэдэг. Энэ жишээ хувилбарт А ангилал нь супер ангийн (B) бүх нийтийн болон хамгаалагдсан шинж чанарууд болон аргуудыг өвлөн авах болно. Дэд анги нь эх ангиас удамшсан зан төлөвийг сонголтоор хүчингүй болгож (аргуудад шинэ эсвэл өргөтгөсөн функцээр хангах) боломжтой. Өв залгамжлал нь OOP дахь "болов уу" харилцааг илэрхийлдэг. Энэ нь үндсэндээ А нь В мөн гэсэн үг юм. Өөрөөр хэлбэл, В нь тодорхой бодит ертөнцийн ерөнхий тодорхойлолт бүхий анги байж болох ч А нь тодорхой мэргэшлийг зааж өгдөг. Бодит ертөнцийн програмчлалын асуудалд Person ангиллыг өргөтгөж, Ажилтны анги үүсгэх боломжтой. Үүнийг мэргэшил гэж нэрлэдэг. Гэхдээ та эхлээд Ажилтны анги үүсгэж, дараа нь үүнийг Person ангилалд нэгтгэж болно (i.д. ерөнхий дүгнэлт). Энэ жишээнд Ажилтан нь тухайн хүний бүх шинж чанар, зан төлөвийг (жишээ нь: Ажилтан нь мөн Хувь хүн) байх бөгөөд зарим нэмэлт функцуудыг агуулж болно (тиймээс Хүн нь Ажилтан биш юм).

Контейнер гэж юу вэ?

Containership гэдэг нь анги өөр ангиллын объектуудыг гишүүн өгөгдөл болгон агуулж байх чадварыг хэлнэ. Жишээлбэл, А анги нь В ангиллын объектыг гишүүнээр агуулж болно. Энд В-д тодорхойлсон бүх нийтийн аргууд (эсвэл функцууд) нь А ангилалд хэрэгжих боломжтой. А анги нь контейнер болж, В анги нь агуулагдсан анги болно. Савыг мөн найрлага гэж нэрлэдэг. Энэ жишээн дээр А анги нь В ангиас бүрддэг гэж хэлж болно. OOP-д Containership нь “байна-a” харьцааг илэрхийлдэг. Контейнер нь агуулагдсан ангийн бүх нийтийн аргуудыг гүйцэтгэх эрхтэй ч нэмэлт функцийг өөрчлөх эсвэл өгөх боломжгүй гэдгийг анхаарах нь чухал юм. Бодит ертөнцийн програмчлалын асуудлын тухай ярихад TextBox ангийн объект Form ангид агуулагдаж болох тул Маягт нь TextBox (эсвэл маягт нь TextBox-аас бүрдэнэ) агуулж байна гэж хэлж болно.

Өв залгамжлал ба контейнер хоорондын ялгаа

Хэдийгээр Өв залгамжлал ба Контейнер нь хоёр OOP ойлголт боловч тэдгээр нь программист хүрэх боломжийг олгодог зүйлээрээ огт өөр юм. Өв залгамжлал нь тухайн анги нь эцэг ангиасаа өргөтгөх замаар шинж чанар, зан төлөвийг өвлөн авах чадварыг хэлдэг бол Containership нь анги өөр ангиллын объектуудыг гишүүн өгөгдөл болгон агуулж байх чадварыг хэлнэ. Хэрэв анги өргөтгөсөн бол энэ нь бүх нийтийн болон хамгаалагдсан шинж чанаруудыг өвлөн авах ба тэдгээр зан үйлийг дэд ангид дарж болно. Гэхдээ хэрэв анги өөр ангид агуулагдаж байвал контейнер нь агуулагдаж байгаа зүйлдээ зан төлөвийг өөрчлөх, нэмэх чадваргүй болно. Өв залгамжлал нь OOP-д "бол-а"-ын харилцааг илэрхийлдэг бол Контейнер нь "байгаа-a"-ын харилцааг илэрхийлнэ.

Зөвлөмж болгож буй: