Sw203 Lecture8 Interface

1,769 views

Published on

Interface

Published in: Education, Technology
  • Be the first to comment

Sw203 Lecture8 Interface

  1. 1. Объект хандлагат програмчлалын хэл Java Хичээл : C S203 Багш : Д.Энхжаргал Mongolia University of Science & Technology Интерфейс
  2. 2. Хийсвэр класс Үндсэн ойлголт сэргээх нь <ul><ul><li>Java хэлэнд 2 төрлийн класс байдаг. Үүнд: </li></ul></ul><ul><ul><ul><li>Concrete ( тодорхой ) </li></ul></ul></ul><ul><ul><ul><li>Abstract ( хийсвэр ) </li></ul></ul></ul><ul><ul><li>Тэдгээрийн гол ялгаа нь </li></ul></ul><ul><ul><ul><li>Тодорхой классын тохиолдлыг үүсгэж болдог. Харин хийсвэр классын объектыг үүсгэх боломжгүй. </li></ul></ul></ul><ul><ul><li>Тэдгээрийг дотор нь дараах байдлаар ангилж болно. </li></ul></ul><ul><ul><ul><li>Concrete төрлийн классд дараах классууд орно </li></ul></ul></ul><ul><ul><ul><ul><li>final </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Non-final </li></ul></ul></ul></ul><ul><ul><ul><li>Abstract төрлийн классд дараах классууд орно </li></ul></ul></ul><ul><ul><ul><ul><li>abstract class </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Interface </li></ul></ul></ul></ul>
  3. 3. Хийсвэр классууд <ul><ul><li>Хийсвэр класс (Abstract class) </li></ul></ul><ul><ul><ul><li>Бүрэн бус класс бөгөөд түүнээс заавал дэд класс удамших ёстой </li></ul></ul></ul><ul><ul><ul><li>Дор хаяж нэг хийсвэр гишүүн функц агуулах класс юм. Үүнд: </li></ul></ul></ul><ul><ul><ul><li>Хийсвэр функц (abstract function) : Их биегүй гишүүн функц юм. </li></ul></ul></ul><ul><ul><ul><li>Түүний объектыг үүсгэх боломжгүй </li></ul></ul></ul><ul><ul><ul><li>Түүний хүү класс нь түүний хийсвэр функцуудыг биелүүлнэ, эсвэл тэрхүү хүү класс нь өөрөө хийсвэрээр зарлагдана </li></ul></ul></ul><ul><ul><li>Хийсвэр классын хэрэглээний ач холбогдол: Удамшлын харьцаан дахь эх класс дотор гишүүн функцыг ерөнхий хэлбэрээр тодорхойлоод түүний хүү классууд нь тэрхүү функцыг өөрийн онцлогт тохируулан хэрэгжүүлэх боломжийг олгодог. </li></ul></ul><ul><ul><li>Интерфейс нь бичиглэлийн хувьд класстай төстэй боловч зөвхөн тогтмол хувьсагчид болон хийсвэр функцуудыг л агуулдаг. </li></ul></ul>
  4. 4. Интерфейс (Interface) <ul><li>Интерфейс </li></ul><ul><ul><li>Гишүүн өгөгдөл (member varaibles) байхгүй. Тогтмол хувьсагчид (class constants) болон хийсвэр функцууд (abstract methods) агуулдаг. </li></ul></ul><ul><ul><ul><li>interface интерфейсийн нэр </li></ul></ul></ul><ul><ul><ul><li>{ тогтмол хувьсагчид </li></ul></ul></ul><ul><ul><ul><li>функцын тодорхойлолт ( их биегүй ) </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>Интерфейс дэх тогтмол хувьсагчид нь </li></ul></ul><ul><ul><ul><ul><ul><li>public </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>static </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>final байж болно. Тухайлбал: </li></ul></ul></ul></ul></ul><ul><ul><ul><li>public interface Constants { </li></ul></ul></ul><ul><ul><ul><li>public static final int ONE = 1; </li></ul></ul></ul><ul><ul><ul><li> public static final int TWO = 2; </li></ul></ul></ul><ul><ul><ul><li>public static final int THREE = 3; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><li>Java хэлэнд Interface түлхүүр үгийн тусламжтайгаар бүх интерфейсүүдийг түүний биелэгдэх хэсгээс бүрэн тусгаарлаж болдог </li></ul><ul><li>Энд хийсвэр функц агуулаагүй зөвхөн тогтмол хувьсагч агуулсан интерфейс тодорхойлов </li></ul>
  5. 5. Интерфейс (Interface) <ul><ul><li>Интерфейс дэх функцууд нь нийтийн хандалттай тодорхойлогдоно. Нэг ёсондоо интерфейс нь нийтийн хандалттай хийсвэр функцуудын цогц юм. </li></ul></ul><ul><ul><li>interface MyInterface { </li></ul></ul><ul><ul><li>public final int aConstant = 32; </li></ul></ul><ul><ul><li>public final double pi = 3.14159; </li></ul></ul><ul><ul><li>public void methodA( int x ); </li></ul></ul><ul><ul><li>double methodB(); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>Тайлбар: Энд methodB() функц нь өмнөө ямар нэг хандалт тодорхойлогч түлхүүр үггүй тодорхойлогдсон боловч компилятор түүнийг автоматаар нийтийн хандалттай гэж ойлгоно. </li></ul></ul>
  6. 6. Интерфейс (Interface) <ul><ul><li>Интерфейсийг хэрэгжүүлэх </li></ul></ul><ul><ul><li>Интерфейсийн хүрээнд ямар ч хэрэгжүүлэлт байж болохгүй. Иймд түүнийг ямар ч боловсруулалт хийхгүй зөвхөн зааглагчийн үүрэгтэй гэж тодорхойлж болно. </li></ul></ul><ul><ul><li>Интерфейсийг хэрэгжүүлэгч классын нэрний ард implements түлхүүр үгийг тухайн интерфейсийн нэрний хамт бичнэ . </li></ul></ul><ul><ul><li>Интерфейс дэх функцыг хэрэгжүүлэхдээ түүнийг заавал public хандалттай тодорхойлж өгнө </li></ul></ul>
  7. 7. Интерфейс (Interface) <ul><ul><li>class MyClass implements MyInterface { </li></ul></ul><ul><ul><li>public void methodA( int x ) </li></ul></ul><ul><ul><li> { System.out.println(&quot;value of aConstant:&quot;+(aConstant+x) );} </li></ul></ul><ul><ul><li> public double methodB() </li></ul></ul><ul><ul><li>{ return pi; } </li></ul></ul><ul><ul><li> int i=5; </li></ul></ul><ul><ul><li> void display() { System.out.println(&quot;i:&quot;+i); </li></ul></ul><ul><ul><li> System.out.println(&quot;Pi:&quot;+methodB()); } </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>Интерфейсийг хэрэгжүүлэгч класс дахь тухайн функцын хэрэгжүүлэлт нь ижил дүрслэлтэй тодорхойлогдоно. Тухайлбал: MyInterface дотор methodA(int x) функц нь нэг int аргументтай, void төрлийн утга буцаана хэмээн тодорхойлогдсон тул түүнийг хэрэгжүүлэгч MyClass дотор тухайн функцын тодорхойлолт ( нэр, аргумент, буцаах утга ) нь адилхан байна. </li></ul></ul><ul><ul><li>MyInterface -ийг хэрэгжүүлэгч класс </li></ul></ul>Интерфейсийг хэрэгжүүлэгч классын нэрний ард implements түлхүүр үгийг интерфейсийн нэрний хамт бичнэ. MyInterface - ийг хэрэгжүүлэгч MyClass класс нь түүний бүх хийсвэр гишүүн функцын хэрэгжилтийг агуулсан байна Интерфейсийг хэрэгжүүлэгч класс нь өөрийн нэмэлт гишүүдтэй байж болно
  8. 8. Интерфейсийн энгийн жишээ: Интерфейс тодорхойлох Интерфейсийг хэрэгжүүлэгч класс тодорхойлох Энд тухайн интерфейсийн хийсвэр функцын хэрэгжилтийг тодорхойлсон байна
  9. 9. <ul><li>Интерфейсийг хэрэгжүүлэх </li></ul><ul><ul><li>Нэг интерфейсийг хэдэн ч класс хэрэгжүүлэх боломжтой. Эсрэгээрээ нэг класс хэдэн ч интерфейсийг хэрэгжүүлэх боломжтой. Хэд хэдэн интерфейсийг хэрэгжүүлэх классыг тодорхойлохын тулд тэдгээрийг таслалаар зааглаж бичнэ. </li></ul></ul><ul><ul><li>Хэдийгээр Java хэл нь нийлмэл удамшлыг дэмждэггүй боловч нийлмэл интерфейс хэмээх ойлголт нь нийлмэл удамшлын нэг хэлбэр юм. </li></ul></ul>Интерфейс (Interface)
  10. 10. Нэг интерфейсийг хэд хэдэн классд хэрэгжүүлэх нь Интерфейс хэрэгжүүлэгч Интерфейс хэрэгжүүлэгч Интерфейс Интерфейс дэх функцын хэрэгжилт
  11. 11. Нэг классд хэд хэдэн интерфейсийг хэрэгжүүлэх нь Энд БаклаврОюутан класс нь 2 интерфейсийг хэрэгжүүлж байна PaymentInterface- ийн CalculatePayment() функцын хэрэгжилт UniversityInterface- ийн display() функцын хэрэгжилт Хийсвэр функцээс гадна тогтмол хувьсагч агуулах интерфейс
  12. 12. Нэг классд хэд хэдэн интерфейсийг хэрэгжүүлэх нь ( үргэлжлэл )
  13. 13. Интерфейсийн жишээ: Дэлгүүр <ul><li>Бараа (Goods) нь дараах шинж чанартай: </li></ul><ul><ul><li>Тодорхойлолт (description) </li></ul></ul><ul><ul><li>Үнэ (price) </li></ul></ul><ul><li>Барааны дараах хэлбэрүүд байдаг. </li></ul><ul><ul><li>Хүнс (foods) </li></ul></ul><ul><ul><li>Тоглоом (toys) </li></ul></ul><ul><ul><li>Ном (books) </li></ul></ul><ul><li>Дээрх бараануудаас Хүнс (foods) нь таксгүй, харин Тоглоом болон Ном худалдан авбал такс төлдөг гэж үзье. </li></ul><ul><li>Такстай бараа нь </li></ul><ul><ul><ul><li>6 % -ийн татвар төлдөг </li></ul></ul></ul><ul><ul><ul><li>calculateTax() функцтэй </li></ul></ul></ul>
  14. 14. <ul><li>Энд Хүнс (Foods) болон Тоглоом (Toys) , Ном (Books) классууд нь Бараа (Goods) гэсэн эх классаас удамшина </li></ul><ul><li>Харин Тоглоом (Toys) , Ном (Books) классууд нь Такстай (Taxable) интерфейсийг хэрэгжүүлнэ </li></ul>Интерфейсийн жишээ: Дэлгүүр Удамшил Интерфейс Хүнс (Foods) болон Тоглоом (Toys) , Ном (Books) классууд нь Бараа (Goods) гэсэн эх классын display() функцыг удамшина Тоглоом (Toys) , Ном (Books) классууд нь Такстай бараа (Taxable) гэсэн интерфейсийн calculateTax() функцыг хэрэгжүүлэх ёстой Илчлэг Насны хязгаар Зохиогч
  15. 15. Үргэлжлэл interface Taxable { final double taxRate = 0.06 ; double calculateTax() ; }
  16. 16. Үргэлжлэл
  17. 17. Тестэр програмдаа жижигхэн өөрчлөлт оруулъя: ( массив ашиглах )
  18. 18. Интерфейсийг төрөлтэй адилхан ашиглаж болно

×