JavaRush /مدونة جافا /Random-AR /UML: من النظرية إلى التطبيق
Viacheslav
مستوى

UML: من النظرية إلى التطبيق

نشرت في المجموعة

مقدمة

أعتقد أن الجميع قد سمعوا في مرحلة الطفولة مقولة مثل " قس مرتين واقطع مرة واحدة ". إنه نفس الشيء في البرمجة. من الأفضل دائمًا التفكير في التنفيذ قبل قضاء الوقت في تنفيذه. في كثير من الأحيان، أثناء التنفيذ، يتعين عليك إنشاء فئات وابتكار تفاعلها. وغالبًا ما يساعد التمثيل المرئي لهذا في حل المشكلة بالطريقة الصحيحة. هذا هو المكان الذي يساعدنا فيه UML .

ما هو UML؟

إذا نظرت إلى الصور في محركات البحث، فسيصبح من الواضح أن UML يتعلق بالرسوم البيانية والأسهم والمربعات. المهم هو أن UML يترجم إلى لغة النمذجة الموحدة . كلمة موحدة مهمة هنا. وهذا يعني أن صورنا لن يتم فهمها من جانبنا فقط، ولكن أيضًا من قبل الآخرين الذين يعرفون لغة UML. اتضح أن هذه لغة دولية لرسم المخططات.

UML: من النظرية إلى التطبيق - 1

كما تقول ويكيبيديا

UML هي لغة وصف رسومية لنمذجة الكائنات في تطوير البرمجيات ونمذجة العمليات التجارية وتصميم الأنظمة وعرض الهياكل التنظيمية.
الشيء الأكثر إثارة للاهتمام الذي لا يفكر فيه أو يدركه الجميع هو أن لغة UML لها مواصفات. علاوة على ذلك، هناك أيضًا مواصفات UML2. يمكن العثور على مزيد من التفاصيل حول المواصفات على موقع ويب Object Management Group . في الواقع، تعمل هذه المجموعة على تطوير مواصفات UML. ومن المثير للاهتمام أيضًا أن UML لا يقتصر على وصف بنية الفئات. هناك أنواع عديدة من مخططات UML. يمكن رؤية وصف موجز لأنواع مخططات UML في نفس ويكيبيديا: مخططات UML أو في الفيديو بواسطة Timur Batyrshinov مراجعة مخططات UML . يستخدم UML أيضًا على نطاق واسع لوصف العمليات المختلفة، على سبيل المثال هنا: الدخول الموحد باستخدام JWT . وبالعودة إلى استخدام الرسوم البيانية لفئة UML، تجدر الإشارة إلى كتاب " الرأس أولاً: أنماط التصميم" ، حيث يتم توضيح الأنماط بواسطة نفس مخططات UML. وتبين أن UML قيد الاستخدام بالفعل. واتضح أن معرفة وفهم تطبيقه يعد مهارة مفيدة جدًا.

طلب

دعونا نلقي نظرة على كيفية العمل مع نفس UML من IDE. لنأخذ IntelliJ Idea باعتباره IDE . إذا استخدمنا IntelliJ Idea Ultimate ، فسيكون لدينا البرنامج الإضافي " دعم UML " مثبتًا خارج الصندوق. يسمح لك بإنشاء مخططات فصلية جميلة تلقائيًا. على سبيل المثال، باستخدام Ctrl+N أو عنصر القائمة "التنقل" -> "الفئة" نذهب إلى فئة ArrayList . الآن، من خلال قائمة السياق لاسم الفئة، حدد "الرسم البياني" -> "إظهار الرسم البياني المنبثق". ونتيجة لذلك، نحصل على مخطط جميل:
UML: من النظرية إلى التطبيق - 2
ولكن ماذا لو كنت تريد رسمها بنفسك، وليس لديك حتى الإصدار النهائي من Idea؟ إذا استخدمنا IntelliJ Idea Community Edition، فلن يكون لدينا خيار آخر. للقيام بذلك، تحتاج إلى فهم كيفية تنظيم مخطط UML هذا. أولاً، سنحتاج إلى تثبيت Graphviz . هذه مجموعة من الأدوات المساعدة لتصور الرسوم البيانية. يتم استخدامه بواسطة البرنامج المساعد الذي سنستخدمه. بعد التثبيت، تحتاج إلى إضافة دليل bin من دليل تثبيت Graphviz إلى متغير بيئة PATH الخاص بك . بعد ذلك، في IntelliJ Idea، حدد ملف -> الإعدادات من القائمة. في نافذة "الإعدادات"، حدد فئة "المكونات الإضافية"، وانقر فوق الزر "تصفح المستودعات" وقم بتثبيت البرنامج الإضافي لتكامل PlantUML . لماذا يعد PlantUML جيدًا جدًا ؟ يستخدم لغة وصف الرسم البياني تسمى " dot " لوصف UML وهذا يسمح لها بأن تكون أكثر عالمية، لأن... لا يتم استخدام هذه اللغة بواسطة PlantUML فقط. علاوة على ذلك، كل ما نقوم به أدناه يمكن القيام به ليس فقط في IDE، ولكن أيضًا في الخدمة عبر الإنترنت planttext.com . بعد تثبيت البرنامج المساعد PlantUML، سنكون قادرين على إنشاء مخططات UML من خلال "ملف" -> "جديد". لنقم بإنشاء رسم تخطيطي لنوع "فئة UML". أثناء هذه العملية، يتم إنشاء قالب يحتوي على مثال تلقائيًا. دعونا نحذف محتوياته وننشئ محتوى خاص بنا، متسلحين بمقال من حبر: العلاقات الطبقية - من UML إلى الكود . ولفهم كيفية تصوير ذلك في النص، فلنأخذ دليل PlantUML: مخطط فئة Plantuml . يوجد في البداية جدول يوضح كيفية وصف الاتصالات:
UML: من النظرية إلى التطبيق - 3
يمكننا أيضًا إلقاء نظرة على الروابط نفسها هنا: " العلاقات بين الفئات في UML. أمثلة ." بناءً على هذه المواد، فلنبدأ في إنشاء مخطط UML الخاص بنا. دعونا نضيف المحتوى التالي الذي يصف الفئتين:

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
لرؤية النتيجة في Idea، حدد "عرض" -> "أداة Windows" -> "PlantUML". سنحصل فقط على مربعين يمثلان الطبقات. كما نعلم، تقوم كلتا الفئتين بتنفيذ واجهة القائمة. تسمى هذه العلاقة الطبقية بالتنفيذ. لتصوير مثل هذا الاتصال، استخدم سهمًا بخط منقط. دعونا نصورها:
interface List
List <|.. ArrayList
List <|.. LinkedList
List- أحد فصول الطفل Collection. أي أنه يرث من الجمع. هذا الاتصال يسمى التعميم. يبدو وكأنه سهم بخط مستمر منتظم. دعونا نصورها:
interface Collection
Collection <|-- List
بالنسبة لنوع الاتصال التالي، أضف إلى وصف الفئة ArrayListإدخالاً حول مجموعة عناصر الحزمة الخاصة :
~Object[] elementData
الآن نريد أن نظهر ما ArrayListيحتوي على بعض الكائنات. في هذه الحالة، سيكون نوع الاتصال هو التجميع . الوحدة في هذه الحالة هي ArrayList، لأن أنه يحتوي على كائنات أخرى. نختار التجميع لأن الكائنات الموجودة في القائمة يمكن أن تعيش بدون القائمة: فهي ليست جزءًا لا يتجزأ منها. حياتهم غير مرتبطة بعمر القائمة. يُترجم التجميع من اللاتينية على أنه "مُجمَّع"، أي شيء مكون من شيء ما. على سبيل المثال، في الحياة هناك وحدة ضخ تتكون من مضخة ومحرك. يمكن تفكيك الوحدة نفسها مع ترك بعض مكوناتها. على سبيل المثال، للبيع أو وضعها في وحدة أخرى. هكذا هي القائمة. ويتم التعبير عن ذلك على شكل ماسة فارغة بالقرب من الوحدة وخط متصل. دعونا نصورها هكذا:
class Object{
}
ArrayList o- Object
الآن نريد أن نبين أنه، على عكس ، يحتوي ArrayListالفصل على حاويات تشير إلى البيانات المخزنة. في هذه الحالة، هم جزء من أنفسهم ولا يمكنهم العيش بشكل منفصل. لا يتم تخزين المحتوى مباشرة، ولكنه يحتوي فقط على رابط إليه. على سبيل المثال، عندما نضيف إلى صف، نضيف جديدًا ، والذي يحتوي على رابط لهذا الصف، بالإضافة إلى رابط إلى الصف السابق والتالي . يسمى هذا النوع من التواصل بالتكوين . لعرض مركب (يتكون من أجزاء)، يتم رسم معين ملون، مع وجود خط متواصل يؤدي إليه. لنكتب الآن هذا كعرض نصي للاتصال: LinkedListNodeNodeLinkedListNodeLinkedListNodeNode
class Node{
}
LinkedList *-- Node
والآن نحن بحاجة إلى تعلم كيفية عرض نوع آخر مهم من العلاقات - علاقة التبعية . يتم استخدامه عندما يستخدم فئة واحدة أخرى، ولكن الفئة لا تحتوي على الفئة المستخدمة وليس سليلها. على سبيل المثال، LinkedListيعرفون ArrayListكيفية إنشاء ملفات ListIterator. لنعرض ذلك على شكل أسهم بخط منقط:
class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
بعد كل هذا سيكون شكله كالتالي:
UML: من النظرية إلى التطبيق - 4
يمكنك الخوض في أكبر قدر ممكن من التفاصيل حسب الضرورة. جميع التسميات موضحة هنا: " PlantUML - Class Diagram ". بالإضافة إلى ذلك، لا يوجد شيء خارق للطبيعة في رسم مثل هذا المخطط، وعند العمل على مهامك، يمكنك رسمه بسرعة باليد. سيؤدي هذا إلى تطوير مهاراتك في التفكير من خلال بنية التطبيق ويساعدك على تحديد عيوب بنية الفصل في وقت مبكر، بدلاً من قضاء اليوم في تنفيذ النموذج الخاطئ. أعتقد أن هذا سبب وجيه لتجربته؟ )
UML: من النظرية إلى التطبيق - 5

أتمتة

هناك طرق مختلفة لإنشاء مخططات PlantUML تلقائيًا. على سبيل المثال، تحتوي Idea على مكون إضافي SketchIT ، ولكنها لا ترسمها بشكل صحيح تمامًا. على سبيل المثال، تم رسم تنفيذ الواجهات بشكل غير صحيح (يتم عرضها على أنها وراثة). توجد أيضًا أمثلة على الإنترنت لكيفية دمج ذلك في دورة حياة بناء مشروعك. لنفترض أن هناك مثالًا لـ Maven يستخدم uml-Java-docklet . لإظهار كيفية القيام بذلك، سوف نستخدم Maven Archetype لإنشاء مشروع Maven بسرعة. لننفذ الأمر: mvn archetype:generate عندما يُطلب منك تحديد عامل تصفية ( اختر رقمًا أو قم بتطبيق عامل التصفية )، اترك الإعداد الافتراضي بمجرد الضغط على Enter. سيكون هذا دائمًا " maven-archetype-quickstart ". حدد الإصدار الأحدث. بعد ذلك نجيب على الأسئلة ونكمل إنشاء المشروع:
UML: من النظرية إلى التطبيق - 6
نظرًا لأن Maven ليس محور هذه المقالة، يمكن العثور على إجابات لأسئلتك حول Maven في مركز مستخدمي Maven . في المشروع الذي تم إنشاؤه، افتح ملف وصف المشروع، pom.xml، لتحريره . لننسخ المحتويات من وصف تثبيت uml-Java-docklet فيه . لا يمكن العثور على القطعة الأثرية المستخدمة في الوصف في مستودع Maven المركزي. لكنها نجحت بالنسبة لي مع هذا: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0 . أي أنك في هذا الوصف تحتاج فقط إلى استبدال معرف المجموعة من " info.leadinglight " بـ " com.chfourie " وتعيين الإصدار على " 1.0.0 ". بعد ذلك، يمكننا تنفيذ هذه الأوامر في الدليل الذي يوجد به ملف pom.xmlmvn clean install : و mvn javadoc:javadoc. الآن، إذا فتحنا الوثائق التي تم إنشاؤها (explorer target\site\apidocs\index.html)، فسنرى مخططات UML. بالمناسبة، تم بالفعل عرض التنفيذ بشكل صحيح هنا)

خاتمة

كما ترون، UML يسمح لك بتصور بنية التطبيق الخاص بك. علاوة على ذلك، لا يقتصر UML على هذا فقط. باستخدام UML، يمكنك وصف العمليات المختلفة داخل شركتك أو وصف عملية الأعمال التي تعمل ضمنها الوظيفة التي تكتبها. إن مدى فائدة لغة UML بالنسبة لك شخصيًا هو أمر متروك لك لتقرره، ولكن تخصيص الوقت لقراءتها بمزيد من التفاصيل سيكون مفيدًا على أي حال. # فياتشيسلاف
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION