# PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP module Example class Student #------------------------ # MEMBER VARIABLES #------------------------ #Student Attributes - for documentation purposes #attr_reader :number #Student Associations - for documentation purposes #attr_reader :mentors #------------------------ # CONSTRUCTOR #------------------------ def initialize(a_number) @initialized = false @deleted = false @number = a_number @mentors = [] @initialized = true end #------------------------ # INTERFACE #------------------------ def set_number(a_number) was_set = false @number = a_number was_set = true was_set end def get_number @number end def get_mentor(index) a_mentor = @mentors[index] a_mentor end def get_mentors new_mentors = @mentors.dup new_mentors end def number_of_mentors number = @mentors.size number end def has_mentors has = @mentors.size > 0 has end def index_of_mentor(a_mentor) index = @mentors.index(a_mentor) index = -1 if index.nil? index end def is_number_of_mentors_valid is_valid = number_of_mentors >= Student.minimum_number_of_mentors is_valid end def self.minimum_number_of_mentors 2 end def add_mentor(a_mentor) was_added = false return false if index_of_mentor(a_mentor) != -1 @mentors << a_mentor if a_mentor.index_of_student(self) != -1 was_added = true else was_added = a_mentor.add_student(self) unless was_added @mentors.delete(a_mentor) end end was_added end def remove_mentor(a_mentor) was_removed = false unless @mentors.include?(a_mentor) return was_removed end if number_of_mentors <= Student.minimum_number_of_mentors return was_removed end oldIndex = @mentors.index(a_mentor) @mentors.delete_at(oldIndex) if a_mentor.index_of_student(self) == -1 was_removed = true else was_removed = a_mentor.remove_student(self) @mentors.insert(oldIndex,a_mentor) unless was_removed end was_removed end def set_mentors(new_mentors) was_set = false verified_mentors = [] new_mentors.each do |a_mentor| next if (verified_mentors.include?(a_mentor)) verified_mentors << a_mentor end if verified_mentors.size != new_mentors.size or verified_mentors.size < Student.minimum_number_of_mentors return was_set end old_mentors = @mentors.dup @mentors.clear verified_mentors.each do |a_new_mentor| @mentors << a_new_mentor if old_mentors.include?(a_new_mentor) old_mentors.delete(a_new_mentor) else a_new_mentor.add_student(self) end end old_mentors.each do |an_old_mentor| an_old_mentor.remove_student(self) end was_set = true was_set end def add_mentor_at(a_mentor, index) was_added = false if add_mentor(a_mentor) if(index < 0) index = 0 end if(index > number_of_mentors()) index = number_of_mentors() - 1 end @mentors.delete(a_mentor) @mentors.insert(index, a_mentor) was_added = true end was_added end def add_or_move_mentor_at(a_mentor, index) was_added = false if @mentors.include?(a_mentor) if(index < 0) index = 0 end if(index > number_of_mentors()) index = number_of_mentors() - 1 end @mentors.delete(a_mentor) @mentors.insert(index, a_mentor) was_added = true else was_added = add_mentor_at(a_mentor, index) end was_added end def delete @deleted = true copy_of_mentors = @mentors.dup @mentors.clear copy_of_mentors.each do |a_mentor| a_mentor.remove_student(self) end end end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP module Example class Mentor #------------------------ # MEMBER VARIABLES #------------------------ #Mentor Attributes - for documentation purposes #attr_reader :name #Mentor Associations - for documentation purposes #attr_reader :students #------------------------ # CONSTRUCTOR #------------------------ def initialize(a_name) @initialized = false @deleted = false @name = a_name @students = [] @initialized = true end #------------------------ # INTERFACE #------------------------ def set_name(a_name) was_set = false @name = a_name was_set = true was_set end def get_name @name end def get_student(index) a_student = @students[index] a_student end def get_students new_students = @students.dup new_students end def number_of_students number = @students.size number end def has_students has = @students.size > 0 has end def index_of_student(a_student) index = @students.index(a_student) index = -1 if index.nil? index end def self.minimum_number_of_students 0 end def self.maximum_number_of_students 3 end def add_student(a_student) was_added = false return false if index_of_student(a_student) != -1 if number_of_students >= Mentor.maximum_number_of_students return was_added end @students << a_student if a_student.index_of_mentor(self) != -1 was_added = true else was_added = a_student.add_mentor(self) unless was_added @students.delete(a_student) end end was_added end def remove_student(a_student) was_removed = false unless @students.include?(a_student) return was_removed end oldIndex = @students.index(a_student) @students.delete_at(oldIndex) if a_student.index_of_mentor(self) == -1 was_removed = true else was_removed = a_student.remove_mentor(self) @students.insert(oldIndex,a_student) unless was_removed end was_removed end def add_student_at(a_student, index) was_added = false if add_student(a_student) if(index < 0) index = 0 end if(index > number_of_students()) index = number_of_students() - 1 end @students.delete(a_student) @students.insert(index, a_student) was_added = true end was_added end def add_or_move_student_at(a_student, index) was_added = false if @students.include?(a_student) if(index < 0) index = 0 end if(index > number_of_students()) index = number_of_students() - 1 end @students.delete(a_student) @students.insert(index, a_student) was_added = true else was_added = add_student_at(a_student, index) end was_added end def delete @deleted = true copy_of_students = @students.dup @students.clear copy_of_students.each do |a_student| if a_student.number_of_mentors <= Student.minimum_number_of_mentors a_student.delete else a_student.remove_mentor(self) end end end end end