דיאגרמת מחלקה

בהנדסת תוכנה, דיאגרמת מחלקה, בשפת UML, היא סוג של תרשים סטטי המתאר את מבנה המערכת על ידי הצגת מחלקותיה, תכונותיהן והקשרים בין המחלקות.

רקע 
תרשים המחלקה הוא אבן הבניין המרכזית במידול מונחה עצמים. התרשים משמש לשתי מטרות עיקריות והן:
 מידול כללי-תפישתי של רכיבי האפליקציה.
 מידול מפורט למען תרגום המודל לקוד מקור.

המחלקות בדיאגרמת המחלקה מייצגות גם את האובייקטים העיקריים וגם את היחסים בין האפליקציה ובין האובייקטים אשר יומרו לקוד מקור.
תרשים המחלקה מציג את המחלקה בתיבות אשר כוללות שלושה חלקים:
חלקה העליון של התיבה יכלול את שם המחלקה
חלקה האמצעי של התיבה יכלול את מאפייני המחלקה
חלקה התחתון של התיבה מכיל את המתודות או הפעולות אשר המחלקה יכולה לבצע

בתרשים עיצוב מערכת, המחלקות מאוחדות יחדיו בתרשים מחלקה אשר מסייע לקבוע את הקשרים הסטטיים בין האובייקטים.

מרכיבים 
UML מספק מנגנונים לייצוג מרכיבי מחלקה כגון : מאפיינים, מתודות ומידע נוסף לגביהם.

ראות 
כדי לציין את רמת הראות (Visibility) של מרכיב מחלקה (למשל: מאפיין או מתודה) ישנן דרכי ציון אשר יופיעו לפני שם המרכיב:

יחסים בין מחלקות 

היחסים הקיימים בדיאגרמת מחלקה הם:
 Association - יחס כלשהו בין מחלקות. המספרים בקצוות מציינים את מספר (או טווח) העצמים בכל צד של היחס (Multiplicity).

 Inheritance - ירושה ממחלקת בסיס.
 Realization / Implementation - מימוש ממשק.

 Dependency - תלות של מחלקה אחת במחלקה אחרת.
 Aggregation - יחס הכלה חלש: מחלקה מכילה מצביע לעצם, כאשר העצם המוצבע יכול להתקיים ללא המחלקה המכילה.
 Composite Aggregation - יחס הכלה חזק: מחלקה מכילה עצם, כאשר העצם המוכל מתקיים רק עם העצם החיצוני.

טווח 
שפת UML מגדירה שני סוגי טווחים (Scope) עבור מרכיבי המחלקה: מופע ומסווג (Classifier). במקרה של מרכיב מסוג מופע, הטווח הוא המופע הספציפי. עבור מאפייני המחלקה, הכוונה היא כי עריכתם משתנה בין כל מופע למופע. עבור שגרות הכוונה היא שהכניסה אליהן תלויה במצבן הנוכחי. לעומת זאת, במקרה של מרכיב מסוג מסווג, הטווח הוא המחלקה. עבור המתודות, כניסה אליהן אינה משפיעה או מושפעת ממצב האובייקטים. מרכיבי המסווג לעיתים מוכרים כמשתנים סטטיים בשפות תכנות רבות. כדי להצהיר על כך שמרכיב מסוים מקבל טווח מסווג שמות יוצג עם קו תחתון. אחרת, המחלקה תהיה בטווח מופע.

קישורים חיצוניים

הנדסת תוכנה