Class: YUML::Class

Inherits:
Object
  • Object
show all
Defined in:
lib/yuml/class.rb

Overview

Represents a yUML Class

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeClass

Returns a new instance of Class.



6
7
8
9
10
# File 'lib/yuml/class.rb', line 6

def initialize
  @methods = []
  @variables = []
  @relationships = []
end

Instance Attribute Details

#name(name = nil, prototype = nil) ⇒ Object



12
13
14
15
16
# File 'lib/yuml/class.rb', line 12

def name(name = nil, prototype = nil)
  @name = name if name
  @prototype = prototype if prototype
  "#{normalized_prototype}#{@name}"
end

Instance Method Details

#associated_with(dest, type: :directed_assoication, cardinality: nil, association_name: cardinality) ⇒ Object



49
50
51
52
53
54
55
56
# File 'lib/yuml/class.rb', line 49

def associated_with(dest, type: :directed_assoication, cardinality: nil, association_name: cardinality)
  cardinality ||= association_name
  type = :directed_assoication unless %i(
    association directed_assoication two_way_association dependency
  ).include?(type)
  relationship = YUML::Relationship.send(type, cardinality)
  @relationships << "[#{name}]#{relationship}[#{dest.name}]"
end

#attach_note(content, color = nil) ⇒ Object



58
59
60
# File 'lib/yuml/class.rb', line 58

def attach_note(content, color = nil)
  @relationships << "[#{name}]-#{YUML::Note.create(content, color)}"
end

#has_a(dest, type: :aggregation, cardinality: nil, association_name: cardinality) ⇒ Object



36
37
38
39
40
41
# File 'lib/yuml/class.rb', line 36

def has_a(dest, type: :aggregation, cardinality: nil, association_name: cardinality)
  cardinality ||= association_name
  type = :aggregation unless %i(composition aggregation).include?(type)
  relationship = YUML::Relationship.send(type, cardinality)
  @relationships << "[#{name}]#{relationship}[#{dest.name}]"
end

#is_a(dest, type: :inheritance) ⇒ Object



43
44
45
46
47
# File 'lib/yuml/class.rb', line 43

def is_a(dest, type: :inheritance)
  type = :inheritance unless %i(inheritance interface).include?(type)
  relationship = YUML::Relationship.send(type)
  @relationships << "[#{dest.name}]#{relationship}[#{name}]"
end

#methods(*args) ⇒ Object



30
31
32
33
34
# File 'lib/yuml/class.rb', line 30

def methods(*args)
  args.flatten!
  return attributes(@methods) if args.empty?
  @methods << normalize(args)
end

#relationshipsObject



66
67
68
# File 'lib/yuml/class.rb', line 66

def relationships
  "#{@relationships.join(',')}" unless @relationships.empty?
end

#to_sObject



62
63
64
# File 'lib/yuml/class.rb', line 62

def to_s
  "[#{name}#{variables}#{methods}]"
end

#variables(*args) ⇒ Object



24
25
26
27
28
# File 'lib/yuml/class.rb', line 24

def variables(*args)
  args.flatten!
  return attributes(@variables) if args.empty?
  @variables << normalize(args)
end