CodeGym /Java Blog /এলোমেলো /ইউএমএল ক্লাস ডায়াগ্রাম
John Squirrels
লেভেল 41
San Francisco

ইউএমএল ক্লাস ডায়াগ্রাম

এলোমেলো দলে প্রকাশিত

ভূমিকা

আমি মনে করি সবাই এই কথাটি শুনেছেন "দুইবার পরিমাপ করুন, একবার কাটুন"। এটা প্রোগ্রামিং এ সত্য উপদেশ. এটি বাস্তবায়নের জন্য যেকোন সময় ব্যয় করার আগে এটি বাস্তবায়ন সম্পর্কে চিন্তা করা সর্বদা ভাল। বাস্তবায়নের সময়, আপনাকে প্রায়শই ক্লাস তৈরি করতে হবে এবং তারা কীভাবে ইন্টারঅ্যাক্ট করবে তা ভাবতে হবে। এটির একটি চাক্ষুষ উপস্থাপনা প্রায়ই আপনাকে সবচেয়ে সঠিক সমাধান নিয়ে আসতে সাহায্য করতে পারে। এখানেই UML ক্লাস ডায়াগ্রাম আমাদের সাহায্যে আসে।

UML কি?

আপনি যদি সার্চ ইঞ্জিনগুলিতে প্রাসঙ্গিক চিত্রগুলি দেখেন, আপনি দেখতে পাবেন যে UML এর ডায়াগ্রাম, তীর এবং বর্গক্ষেত্রের সাথে কিছু করার আছে। আপনাকে জানতে হবে যে UML মানে ইউনিফাইড মডেলিং ল্যাঙ্গুয়েজ। ইউনিফাইড এখানে গুরুত্বপূর্ণ শব্দ। এর মানে হল যে আমাদের ছবিগুলি শুধুমাত্র আমরাই নয়, UML কে চেনে এমন অন্য কেউও বুঝতে পারবে। এটি ডায়াগ্রাম আঁকার জন্য ভাষা ফ্রাঙ্কা।

উইকিপিডিয়া অনুযায়ী,

"ইউএমএল হল সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের ক্ষেত্রে একটি সাধারণ-উদ্দেশ্যমূলক, উন্নয়নমূলক, মডেলিং ভাষা যা একটি সিস্টেমের নকশাকে কল্পনা করার জন্য একটি আদর্শ উপায় প্রদান করার উদ্দেশ্যে তৈরি করা হয়েছে।"
সবচেয়ে আকর্ষণীয় জিনিস, যা সবাই অনুমান করবে না, তা হল যে UML এর স্পেসিফিকেশন আছে। এবং এমনকি একটি UML 2 স্পেসিফিকেশন আছে। স্পেসিফিকেশন সম্পর্কে আরও তথ্য অবজেক্ট ম্যানেজমেন্ট গ্রুপ ওয়েবসাইটে উপলব্ধ। আসলে, এই গ্রুপটি ইউএমএল স্পেসিফিকেশন তৈরি করে। এটাও আকর্ষণীয় যে UML শুধুমাত্র ক্লাসের গঠন বর্ণনা করার মধ্যেই সীমাবদ্ধ নয়। অনেক ধরনের UML ডায়াগ্রাম আছে। উইকিপিডিয়ায় বিভিন্ন ধরনের UML ডায়াগ্রামের সংক্ষিপ্ত বিবরণ রয়েছে: UML ডায়াগ্রামইউএমএল ক্লাস ডায়াগ্রামে ফিরে, এটি "হেড ফার্স্ট ডিজাইন প্যাটার্নস" বইটি উল্লেখ করার মতো , ডিজাইন প্যাটার্নগুলি চিত্রিত করতে ইউএমএল ডায়াগ্রাম ব্যবহার করে। নীচের লাইন হল যে UML সত্যিই ব্যবহৃত হয়। এবং দেখা যাচ্ছে যে এটি জানা এবং কীভাবে ব্যবহার করতে হয় তা বোঝা বেশ কার্যকর।

আবেদন

আসুন আমরা একটি IDE তে UML এর সাথে কাজ করতে পারি তা বের করি। আমরা আমাদের IDE হিসাবে IntelliJ IDEA ব্যবহার করব। আপনি যদি IntelliJ IDEA Ultimate ব্যবহার করেন, তাহলে আমাদের কাছে "UML সাপোর্ট" প্লাগইনটি "বক্সের বাইরে" ইনস্টল থাকবে। এটি আপনাকে স্বয়ংক্রিয়ভাবে সুন্দর ক্লাস ডায়াগ্রাম তৈরি করতে দেয়। উদাহরণস্বরূপ, ArrayList ক্লাসে যেতে Ctrl+N বা "নেভিগেট" -> "ক্লাস" মেনু আইটেম ব্যবহার করুন। এখন ক্লাস নামের প্রসঙ্গ মেনুতে, "ডায়াগ্রাম" -> "ডায়াগ্রাম পপআপ দেখান" নির্বাচন করুন। ফলস্বরূপ, আমরা একটি সুন্দর চিত্র পাই। UML: তত্ত্ব থেকে অনুশীলন - 2 কিন্তু আপনি যদি নিজেই চিত্রটি আঁকতে চান? এবং যদি আপনার আলটিমেট সংস্করণ না থাকে? IntelliJ IDEA কমিউনিটি সংস্করণ ব্যবহার করে, আমাদের অন্য কোন বিকল্প নেই। তাই আমাদের বুঝতে হবে কিভাবে একটি UML ডায়াগ্রাম সংগঠিত হয়। প্রথম,. এটি গ্রাফ ভিজ্যুয়ালাইজেশন টুলের একটি সেট। আমরা যে প্লাগইন ব্যবহার করব তা নির্ভর করে। ইনস্টলেশনের পর, আপনাকে Graphviz ইনস্টলেশন ডিরেক্টরি থেকে PATH এনভায়রনমেন্ট ভেরিয়েবলে বিন ডিরেক্টরি যোগ করতে হবে। এর পরে, IntelliJ IDEA-তে, মেনুতে ফাইল -> সেটিংস নির্বাচন করুন। "সেটিংস" উইন্ডোতে, "প্লাগইন" বিভাগ নির্বাচন করুন, "ভান্ডার ব্রাউজ করুন" বোতামে ক্লিক করুন এবং PlantUML ইন্টিগ্রেশন প্লাগইন ইনস্টল করুন। PlantUML সম্পর্কে এত ভাল কি? এটি "ডট" নামক একটি গ্রাফ বর্ণনার ভাষা ব্যবহার করে ইউএমএলকে বর্ণনা করে, যা এটিকে আরও সার্বজনীন করে তোলে, যেহেতু ডট ভাষা শুধুমাত্র PlantUML-এর চেয়ে বেশি ব্যবহার করে। আরও কী, আমরা নীচে যা করি তা কেবল একটি IDE-তে নয়, planttext.com- এ অনলাইনেও করা যেতে পারে. PlantUML প্লাগইন ইনস্টল করার পরে, আমরা "ফাইল" -> "নতুন" ব্যবহার করে UML ডায়াগ্রাম তৈরি করতে সক্ষম হব। আসুন একটি "ইউএমএল ক্লাস" ডায়াগ্রাম তৈরি করি। এটি স্বয়ংক্রিয়ভাবে একটি উদাহরণ সহ একটি টেমপ্লেট তৈরি করবে। আমরা এর বিষয়বস্তু মুছে ফেলব এবং আমাদের নিজস্ব যোগ করব। পাঠ্যে এটিকে কীভাবে উপস্থাপন করা যায় তা বোঝার জন্য, PlantUML ম্যানুয়ালটি দেখুন: plantuml class-diagram। UML: তত্ত্ব থেকে অনুশীলন - 3এই উপকরণগুলির উপর নির্ভর করে, আসুন আমাদের UML ডায়াগ্রাম তৈরি করা শুরু করি। নিম্নলিখিত বিষয়বস্তু যোগ করুন, যা দুটি শ্রেণী বর্ণনা করে:

@startuml
class ArrayList {
}
class LinkedList {
}
@enduml
IDEA-তে ফলাফল দেখতে, "View" -> "Tool Windows" -> "PlantUML" নির্বাচন করুন। আমরা শুধু দুটি বর্গ পেতে যা ক্লাসের প্রতিনিধিত্ব করে। আমরা জানি যে এই উভয় শ্রেণীই তালিকা ইন্টারফেস বাস্তবায়ন করে। এই শ্রেণী সম্পর্ককে বলা হয় উপলব্ধি। এই সম্পর্কটি একটি বিন্দুযুক্ত রেখা সহ একটি তীর ব্যবহার করে উপস্থাপন করা হয়। আসুন এটি আঁকুন:

interface List
List <|.. ArrayList
List <|.. LinkedList
তালিকাটি সংগ্রহের ক্লাসের বাচ্চাদের মধ্যে একটি । অর্থাৎ, এটি সংগ্রহের উত্তরাধিকারী হয় । এই সম্পর্ককে সাধারণীকরণ বলা হয়। এটি একটি সাধারণ অবিচ্ছিন্ন রেখা সহ একটি তীরের মতো দেখায়। আসুন এটি আঁকুন:

interface Collection
Collection <|-- List
পরবর্তী ধরণের সম্পর্কের জন্য, অ্যারেলিস্ট ক্লাসের বিবরণে উপাদানগুলির একটি প্যাকেজ ব্যক্তিগত অ্যারে সম্পর্কে একটি এন্ট্রি যুক্ত করুন:

~Object[] elementData
এখন আমরা দেখাতে চাই যে ArrayList-এ কিছু বস্তু রয়েছে। এই ক্ষেত্রে, একটি সমষ্টি সম্পর্ক হবে। অ্যারেলিস্টএটি একটি সমষ্টিগত, যেহেতু এতে অন্যান্য বস্তু রয়েছে। আমরা একত্রীকরণ বলি কারণ তালিকার বস্তুগুলি তালিকা ছাড়াই থাকতে পারে: তারা তালিকার অবিচ্ছেদ্য অংশ নয়। তাদের জীবনকাল তালিকার জীবনকালের সাথে বাঁধা নয়। "সমষ্টি" শব্দটি ল্যাটিন থেকে আমাদের কাছে আসে এবং "একত্রিত" হিসাবে অনুবাদ করে, অর্থাৎ কিছু কিছু দিয়ে তৈরি। উদাহরণস্বরূপ, জীবনে, আমাদের একটি পাম্প সমাবেশ (সমষ্টি), যা একটি পাম্প এবং একটি মোটর নিয়ে গঠিত। সমাবেশ নিজেই disassembled করা যেতে পারে, এবং আমরা একা তার উপাদান কিছু ছেড়ে যেতে পারেন. উদাহরণস্বরূপ, বিক্রি করা বা অন্য সমাবেশে রাখা। এটি একটি তালিকা একই ভাবে. এটি সমষ্টিতে একটি খালি রম্বস এবং একটি অবিচ্ছিন্ন রেখা দিয়ে প্রকাশ করা হয়। আমরা এটিকে নিম্নরূপ উপস্থাপন করব:

class Object{
}
ArrayList o- Object
এখন আমরা দেখাতে চাই যে ArrayList এর বিপরীতে , LinkedList ক্লাসে Node s — কনটেইনার রয়েছে যা সংরক্ষিত ডেটার উল্লেখ করে। এই ক্ষেত্রে, নোডগুলি লিঙ্কডলিস্টের অংশ এবং একটি স্বাধীন অস্তিত্ব নেই। একটি নোড সামগ্রী নিজেই নয়। এটি শুধুমাত্র বিষয়বস্তুর একটি রেফারেন্স ধারণ করে। উদাহরণস্বরূপ, যখন আমরা একটি লিঙ্কডলিস্টে একটি স্ট্রিং যোগ করি, তখন আমরা একটি নতুন নোড যুক্ত করছি যাতে স্ট্রিংয়ের একটি রেফারেন্স রয়েছে, সেইসাথে পূর্ববর্তী এবং পরবর্তী নোডের একটি লিঙ্ক রয়েছে. এই সম্পর্ককে রচনা বলা হয়। এটি কম্পোজিটের উপর একটি ভরা রম্বস দিয়ে একটি ক্রমাগত রেখা অঙ্কন করে চিত্রিত করা হয়েছে (গঠক অংশ দিয়ে তৈরি কিছু)। এখন আমরা সম্পর্কটিকে পাঠ্য হিসাবে উপস্থাপন করব:

class Node{
}
LinkedList *-- Node
এবং এখন আপনাকে শিখতে হবে কীভাবে আরেকটি গুরুত্বপূর্ণ ধরণের সম্পর্কের চিত্রিত করা যায়: নির্ভরতা। এটি ব্যবহার করা হয় যখন একটি শ্রেণী অন্যটি ব্যবহার করে, কিন্তু শ্রেণীটিতে ব্যবহৃত শ্রেণী থাকে না বা উত্তরাধিকারী হয় না। উদাহরণস্বরূপ, LinkedList এবং ArrayList জানেন কিভাবে একটি ListIterator তৈরি করতে হয় । আমরা এটিকে একটি বিন্দুযুক্ত রেখা সহ তীর হিসাবে উপস্থাপন করি:

class ListIterator
ListIterator <... ArrayList : create
ListIterator <... LinkedList : create
এই সব করার পরে, আমরা পাই: UML: তত্ত্ব থেকে অনুশীলন - 4আপনি প্রয়োজন হিসাবে অনেক বিস্তারিত যোগ করতে পারেন. অবশ্যই, এই জাতীয় চিত্র আঁকার বিষয়ে অতিপ্রাকৃত কিছুই নেই। আপনার নিজের কাজগুলিতে কাজ করার সময়, আপনি দ্রুত এটি হাতে আঁকতে পারেন। এটি আপনাকে একটি অ্যাপ্লিকেশনের আর্কিটেকচারের মাধ্যমে চিন্তা করার ক্ষমতা বিকাশ করতে এবং শ্রেণী কাঠামোর ত্রুটিগুলি শনাক্ত করতে সাহায্য করবে, আপনি ইতিমধ্যে ভুল মডেল বাস্তবায়নে দিন অতিবাহিত করার পরে নয়। এটি চেষ্টা করার একটি ভাল কারণ বলে মনে হচ্ছে, তাই না? :)

অটোমেশন

প্ল্যান্টইউএমএল ডায়াগ্রামগুলি স্বয়ংক্রিয়ভাবে তৈরি করার বিভিন্ন উপায় রয়েছে। উদাহরণস্বরূপ, IDEA এর SketchIT প্লাগইন আছে, কিন্তু এটি সম্পূর্ণরূপে সঠিকভাবে ডায়াগ্রাম আঁকে না। ধরা যাক ইন্টারফেসের বাস্তবায়ন ভুলভাবে আঁকা হয়েছে (এটি উত্তরাধিকার হিসাবে প্রদর্শিত হয়)। আপনার প্রকল্পের বিল্ড প্রক্রিয়ার সাথে এটিকে কীভাবে একীভূত করা যায় তার উদাহরণ ইন্টারনেটে রয়েছে। উদাহরণস্বরূপ, আপনি Maven এর সাথে uml-java-docklet কিভাবে ব্যবহার করবেন তা খুঁজে পেতে পারেন। প্রদর্শনের জন্য, আমরা দ্রুত একটি Maven প্রকল্প তৈরি করতে Maven Archetype ব্যবহার করব । চালান

mvn archetype:generate
একটি নম্বর চয়ন করুন বা ফিল্টার প্রয়োগ করুন এর প্রতিক্রিয়ায়, ডিফল্টটি ছেড়ে দিন — শুধু এন্টার টিপুন৷ এটি সর্বদা "মাভেন-আর্কিটাইপ-কুইকস্টার্ট" হবে। সর্বশেষ সংস্করণ নির্বাচন করুন. এর পরে, আমরা কিছু প্রশ্নের উত্তর দেব এবং প্রকল্প তৈরি করা শেষ করব: ইউএমএল: তত্ত্ব থেকে অনুশীলন - 5Maven এই নিবন্ধের বিষয় নয়, তাই আপনি Maven ব্যবহারকারী কেন্দ্রে Maven সম্পর্কে আপনার প্রশ্নের উত্তর পেতে পারেন । জেনারেট করা প্রোজেক্টে, এডিট করার জন্য প্রোজেক্ট ডেসক্রিপশন ফাইল, pom.xml খুলুন। আমরা এই ফাইলে uml-java-docklet ইনস্টল করার বিবরণ থেকে বিষয়বস্তু অনুলিপি করব । বর্ণনায় ব্যবহৃত শিল্পকর্মটি মাভেন সেন্ট্রাল রিপোজিটরিতে পাওয়া যাবে না। কিন্তু নিম্নলিখিতগুলি আমার জন্য কাজ করেছে: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0. অন্য কথায়, বিবরণে আপনাকে কেবল "info.leadinglight" থেকে "com.chfourie" তে groupId প্রতিস্থাপন করতে হবে এবং সংস্করণটিকে "1.0.0" এ সেট করতে হবে। এর পরে, আমরা pom.xml ফাইলের সাথে ডিরেক্টরিতে নিম্নলিখিত কমান্ডগুলি চালাতে পারি:

mvn clean install
এবং

mvn javadoc: javadoc
যদি আমরা এখন জেনারেট করা ডকুমেন্টেশন খুলি (এক্সপ্লোরার টার্গেট\site\apidocs\index.html), আমরা UML ডায়াগ্রাম দেখতে পাব। যাইহোক, বাস্তবায়ন সম্পর্ক এখন সঠিকভাবে প্রদর্শিত হয় :)

উপসংহার

আপনি দেখতে পাচ্ছেন, UML আপনাকে আপনার অ্যাপ্লিকেশনের কাঠামোটি কল্পনা করতে দেয়। তবে ইউএমএল আরও অনেক কিছু করতে পারে। আপনি UML ব্যবহার করতে পারেন আপনার কোম্পানির মধ্যে বিভিন্ন প্রক্রিয়া বর্ণনা করতে বা ব্যবসায়িক প্রক্রিয়া বর্ণনা করতে যা আপনার লেখার কাজগুলিকে অন্তর্ভুক্ত করে। ব্যক্তিগতভাবে আপনার জন্য UML কতটা দরকারী তা আপনাকে নিজেই সিদ্ধান্ত নিতে হবে, কিন্তু আপনি যাই সিদ্ধান্ত নিন না কেন, এটি সম্পর্কে আরও জানার জন্য সময় বের করা সহায়ক হবে।
মন্তব্য
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION