How Is Visibility Noted? The following symbols are used to specify export control: Public access # Protected access Private access Class1 -privateAttribute publicAttribute protectedAttribute privateOperation ( publicOPeration protecteOperation() Object Oriented Analysis and Design 16
Object Oriented Analysis and Design 16 How Is Visibility Noted? The following symbols are used to specify export control: ▪ + Public access ▪ # Protected access ▪ - Private access Class1 - privateAttribute + publicAttribute # protectedAttribute - privateOperation () + publicOPeration () # protecteOperation ()
Scope ◆ Determines number of instances of the attribute/operation Instance:one instance for each class instance Classifier:one instance for all class instances ◆ Classifier scope is denoted by underlining the attribute/operation name Class1 classifierScopeAttr instanceScopeAttr classifierScopeOp( instanceScopeOp() Object Oriented Analysis and Design 17
Object Oriented Analysis and Design 17 Scope Determines number of instances of the attribute/operation ▪ Instance: one instance for each class instance ▪ Classifier: one instance for all class instances Classifier scope is denoted by underlining the attribute/operation name Class1 - classifierScopeAttr - instanceScopeAttr + classifierScopeOp () + instanceScopeOp ()
Example:Scope <<Entity>> Student name address studentID nextAvaillD int addSchedule ([in]theSchedule Schedule,[in]forSemester:Semester) getSchedule ([in]forSemester:Semester):Schedule hasPrerequisites([in]forCourseOffering CourseOffering):boolean passed([in]theCourseOffering:CourseOffering):boolean getNextAvaillD ()int Object Oriented Analysis and Design 18
Object Oriented Analysis and Design 18 Example: Scope Student - name - address - nextAvailID : int + addSchedule ([in] theSchedule : Schedule, [in] forSemester : Semester) + getSchedule ([in] forSemester : Semester) : Schedule + hasPrerequisites ([in] forCourseOffering : CourseOffering) : boolean # passed ([in] theCourseOffering : CourseOffering) : boolean + getNextAvailID () : int <<Entity>> - studentID
Example:Define Operations <<control>> RegistrationController <<Interface>> 0.* ICourseCatalogSystem submitSchedule() saveSchedule() getCourseOfferings() getCourseOfferings():CourseOfferingList initialize() getCurrentSchedule([in]forStudent Student,[in]forSemester:Semester):Schedule deleteCurrentSchedule() new [in]forStudentID String) 0.1 +currentSchedule getStudent ([in]anlD int):Student 0.1 0.1 <<Entity>> Schedule registrant 0.1 0.* 0.* 0.* <<Entity>> Student getTuition():double addSchedule ([in]aSchedule:Schedule) +alternateCourses getSchedule([in]forSemester:Semester):Schedule deleteSchedule ([in]forSemester:Semester) +primaryCourses hasPrerequisites ([in]forCourseOffering:CourseOffering):boolean 0.2 0.4 hasPassed ([in]aCourseOffering:CourseOffering):boolean getNextAvaillDO:int <<Entity>> getStudentID(:int CourseOffering getName():String getAddress():String Object Oriented Analysis and Design 19
Object Oriented Analysis and Design 19 Example: Define Operations CourseOffering <<Entity>> Student + getTuition() : double + addSchedule ( [in] aSchedule : Schedule) + getSchedule ( [in] forSemester : Semester) : Schedule + deleteSchedule ( [in] forSemester : Semester) + hasPrerequisites ( [in] forCourseOffering : CourseOffering) : boolean # hasPassed ( [in] aCourseOffering : CourseOffering) : boolean + getNextAvailID() : int + getStudentID() : int + getName() : String + getAddress() : String <<Entity>> RegistrationController + submitSchedule() + saveSchedule() + getCourseOfferings() : CourseOfferingList + getCurrentSchedule ( [in] forStudent : Student, [in] forSemester : Semester) : Schedule + deleteCurrentSchedule() + new ( [in] forStudentID : String) + getStudent ( [in] anID : int) : Student <<control>> Schedule <<Entity>> 0..1 + 0..1 registrant 0..* 1 0..1 0..1 +currentSchedule 0..* 0..* +primaryCourses 0..4 +alternateCourses 0..2 ICourseCatalogSystem + getCourseOfferings() + initialize() <<Interface>> 1 0..*
Outline ◆ Create Initial Design Classes ◆Define Operations ★◆Define Methods ◆Define States ◆ Define Attributes ◆Define Dependencies ◆Define Associations .Define Generalizations Object Oriented Analysis and Design 20
Object Oriented Analysis and Design 20 Outline Create Initial Design Classes Define Operations Define Methods Define States Define Attributes Define Dependencies Define Associations Define Generalizations