umbrello  2.39.2
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
classifier.h
Go to the documentation of this file.
1 /*
2  SPDX-License-Identifier: GPL-2.0-or-later
3  SPDX-FileCopyrightText: 2002-2021 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
4 */
5 #ifndef CLASSIFIER_H
6 #define CLASSIFIER_H
7 
8 #include "package.h"
9 #include "umlattributelist.h"
10 #include "umloperationlist.h"
12 #include "classifierlistitem.h"
13 #include "umltemplatelist.h"
14 #include "model_utils.h"
15 
16 // forward declarations
17 class UMLAssociation;
18 class IDChangeLog;
19 class UMLClassifierSet;
20 
34 class UMLClassifier : public UMLPackage
35 {
36  Q_OBJECT
37 public:
38 
43 
44  explicit UMLClassifier(const QString & name = QString(), Uml::ID::Type id = Uml::ID::None);
45  virtual ~UMLClassifier();
46 
47  virtual void copyInto(UMLObject *lhs) const;
48 
49  UMLObject* clone() const;
50 
51  virtual void setNameCmd(const QString &strName);
52 
53  virtual UMLAttribute* createAttribute(const QString &name = QString(),
54  UMLObject *type = 0,
56  const QString &init = QString());
57 
59  UMLAttribute* addAttribute(const QString &name, UMLObject *type, Uml::Visibility::Enum scope);
60 
61  bool addAttribute(UMLAttribute* att, IDChangeLog* log = 0,
62  int position = -1);
63 
64  int removeAttribute(UMLAttribute *att);
65 
69 
70  UMLOperation* createOperation(const QString &name = QString(),
71  bool *isExistingOp = 0,
72  Model_Utils::NameAndType_List *params = 0);
73 
74  bool addOperation(UMLOperation* op, int position = -1);
75  bool addOperation(UMLOperation* op, IDChangeLog* log);
76 
77  UMLOperation * checkOperationSignature(const QString& name,
78  UMLAttributeList opParams,
79  UMLOperation *exemptOp = 0) const;
80 
82 
83  int operations() const;
84 
85  UMLOperationList getOpList(bool includeInherited = false, UMLClassifierSet *alreadyTraversed = 0) const;
86 
87  UMLObject* createTemplate(const QString& name = QString());
88 
90 
91  bool addTemplate(UMLTemplate* newTemplate, IDChangeLog* log = 0);
92  bool addTemplate(UMLTemplate* templt, int position);
93 
94  int removeTemplate(UMLTemplate* umltemplate);
95 
96  UMLTemplate *findTemplate(const QString& name) const;
97 
98  int templates() const;
99 
101 
102  int takeItem(UMLClassifierListItem* item);
103 
105 
106  virtual bool resolveRef();
107 
108  UMLOperationList findOperations(const QString &n) const;
109 
111  bool considerAncestors = false) const;
112 
113  UMLOperation* findOperation(const QString& name,
114  Model_Utils::NameAndType_List params) const;
115 
117 
119 
120  virtual bool acceptAssociationType(Uml::AssociationType::Enum type) const;
121 
123 
124  bool isInterface() const;
125 
126  bool hasAbstractOps() const;
127  bool hasAssociations() const;
128  bool hasAttributes() const;
129  bool hasStaticAttributes() const;
130  bool hasMethods() const;
131  bool hasAccessorMethods() const;
132  bool hasOperationMethods() const;
133  bool hasVectorFields() const;
134 
140 // UMLClassifierList getPlainAssocChildClassifierList();
141 // UMLClassifierList getAggregateChildClassifierList();
142 // UMLClassifierList getCompositionChildClassifierList();
143 
144  virtual UMLClassifierListItem* makeChildObject(const QString& xmiTag);
145 
146  void removeObject(UMLObject *pObject);
147 
149 
150 signals:
151 
154 
157 
158  // only applies when (m_Type == ot_Class)
161 
162 private:
163 
165 
172 // UMLClassifierList findAssocClassifierObjsInRoles (UMLAssociationList * list);
173 
174 protected:
175 
176  void saveToXMI(QXmlStreamWriter& writer);
177 
178  virtual bool load1(QDomElement& element);
179 
180 };
181 
182 #endif // CLASSIFIER_H
Definition: idchangelog.h:22
Sets up association information.
Definition: association.h:29
Definition: umlattributelist.h:21
Sets up attribute information.
Definition: attribute.h:23
Definition: umlclassifierlistitemlist.h:22
A base class for classifier list items (e.g. attributes)
Definition: classifierlistitem.h:25
holds set of classifiers for recursive loop detection
Definition: classifier.cpp:48
Information for a non-graphical Concept/Class.
Definition: classifier.h:35
bool hasVectorFields() const
Definition: classifier.cpp:1310
UMLAttribute * addAttribute(const QString &name, Uml::ID::Type id=Uml::ID::None)
Definition: classifier.cpp:810
void saveToXMI(QXmlStreamWriter &writer)
Definition: classifier.cpp:1354
UMLObject * clone() const
Definition: classifier.cpp:657
UMLOperationList getOpList(bool includeInherited=false, UMLClassifierSet *alreadyTraversed=0) const
Definition: classifier.cpp:939
void removeObject(UMLObject *pObject)
Definition: classifier.cpp:1488
int takeItem(UMLClassifierListItem *item)
Definition: classifier.cpp:1169
UMLTemplate * addTemplate(const QString &name, Uml::ID::Type id=Uml::ID::None)
Definition: classifier.cpp:1025
virtual bool resolveRef()
Definition: classifier.cpp:691
bool isInterface() const
Definition: classifier.cpp:116
void operationRemoved(UMLClassifierListItem *)
Definition: moc_classifier.cpp:240
virtual bool load1(QDomElement &element)
Definition: classifier.cpp:1513
bool hasAbstractOps() const
Definition: classifier.cpp:909
UMLAttributeList getAttributeList() const
Definition: classifier.cpp:435
bool hasAssociations() const
Definition: classifier.cpp:1248
bool hasMethods() const
Definition: classifier.cpp:1298
int templates() const
Definition: classifier.cpp:1136
virtual UMLClassifierListItem * makeChildObject(const QString &xmiTag)
Definition: classifier.cpp:1461
UMLTemplateList getTemplateList() const
Definition: classifier.cpp:1149
UMLOperation * createOperation(const QString &name=QString(), bool *isExistingOp=0, Model_Utils::NameAndType_List *params=0)
Definition: classifier.cpp:234
bool addOperation(UMLOperation *op, int position=-1)
Definition: classifier.cpp:308
UMLAssociation * m_pClassAssoc
Definition: classifier.h:164
virtual void setNameCmd(const QString &strName)
Definition: classifier.cpp:668
bool hasStaticAttributes() const
Definition: classifier.cpp:1272
UMLClassifier(const QString &name=QString(), Uml::ID::Type id=Uml::ID::None)
Definition: classifier.cpp:62
void operationAdded(UMLClassifierListItem *)
Definition: moc_classifier.cpp:233
virtual UMLObject * findChildObjectById(Uml::ID::Type id, bool considerAncestors=false) const
Definition: classifier.cpp:545
virtual bool acceptAssociationType(Uml::AssociationType::Enum type) const
Definition: classifier.cpp:726
UMLObject * createTemplate(const QString &name=QString())
Definition: classifier.cpp:392
virtual ~UMLClassifier()
Definition: classifier.cpp:72
virtual UMLAttribute * createAttribute(const QString &name=QString(), UMLObject *type=0, Uml::Visibility::Enum vis=Uml::Visibility::Private, const QString &init=QString())
Definition: classifier.cpp:756
int removeTemplate(UMLTemplate *umltemplate)
Definition: classifier.cpp:1103
void setBaseType(UMLObject::ObjectType ot)
Definition: classifier.cpp:81
UMLClassifierList findSubClassConcepts(ClassifierType type=ALL) const
Definition: classifier.cpp:570
int removeAttribute(UMLAttribute *att)
Definition: classifier.cpp:893
bool hasOperationMethods() const
Definition: classifier.cpp:1290
UMLTemplate * findTemplate(const QString &name) const
Definition: classifier.cpp:1120
bool hasAttributes() const
Definition: classifier.cpp:1259
virtual void copyInto(UMLObject *lhs) const
Definition: classifier.cpp:642
int operations() const
Definition: classifier.cpp:926
UMLAttributeList getAttributeListStatic(Uml::Visibility::Enum scope) const
Definition: classifier.cpp:486
void attributeAdded(UMLClassifierListItem *)
Definition: moc_classifier.cpp:261
ClassifierType
Definition: classifier.h:42
@ ALL
Definition: classifier.h:42
@ DATATYPE
Definition: classifier.h:42
@ INTERFACE
Definition: classifier.h:42
@ CLASS
Definition: classifier.h:42
virtual UMLAssociationList getUniAssociationToBeImplemented() const
Definition: classifier.cpp:1318
UMLOperation * findOperation(const QString &name, Model_Utils::NameAndType_List params) const
Definition: classifier.cpp:177
UMLOperationList findOperations(const QString &n) const
Definition: classifier.cpp:521
int removeOperation(UMLOperation *op)
Definition: classifier.cpp:369
void templateAdded(UMLClassifierListItem *)
Definition: moc_classifier.cpp:247
void templateRemoved(UMLClassifierListItem *)
Definition: moc_classifier.cpp:254
UMLClassifierList findSuperClassConcepts(ClassifierType type=ALL) const
Definition: classifier.cpp:609
void attributeRemoved(UMLClassifierListItem *)
Definition: moc_classifier.cpp:268
bool hasAccessorMethods() const
Definition: classifier.cpp:1282
virtual UMLClassifierListItemList getFilteredList(UMLObject::ObjectType ot) const
Definition: classifier.cpp:999
UMLOperation * checkOperationSignature(const QString &name, UMLAttributeList opParams, UMLOperation *exemptOp=0) const
Definition: classifier.cpp:132
The base class for UML objects.
Definition: umlobject.h:70
ObjectType
Definition: umlobject.h:76
void init()
Definition: umlobject.cpp:122
QString name() const
Definition: umlobject.cpp:207
Definition: operation.h:20
Non-graphical information for a Package.
Definition: package.h:28
Sets up template information.
Definition: template.h:22
QLinkedList< NameAndType > NameAndType_List
Auxiliary type for OpDescriptor.
Definition: model_utils.h:124
Enum
Definition: basictypes.h:92
const Type None
special value for uninitialized ID
Definition: basictypes.h:373
std::string Type
Definition: basictypes.h:371
Enum
Definition: basictypes.h:45
@ Private
Definition: basictypes.h:47
QList< UMLAssociation * > UMLAssociationList
Definition: umlassociationlist.h:12
QList< UMLClassifier * > UMLClassifierList
Definition: umlclassifierlist.h:12
QList< UMLOperation * > UMLOperationList
Definition: umloperationlist.h:12
QList< UMLTemplate * > UMLTemplateList
Definition: umltemplatelist.h:13