Has-a-relationship means that a class can have reference to an instance of another class or
another instance of the same class. Has-a-relationship is also known as composition or
aggregation relationship which is a good way of code reuse. Usually used with the new keyword. Composition classes are strongly associated with each other as without a container object, the contained object cannot exists. For example without a Car (Container), Car Battery and Engine would not exist (Contained Object). Is-a-relationship is related to implementation or inheritance and use the word extend or with in Scala. The main advantage of this concept is code reuse. It involves the relationship between the Super-Class (Parent) and the Sub-Classes (Child).Method Overriding allows the Sub-Class to provides its own implementation of a method which already inherited by the Super-Class. It uses the override keyword. Polymorphism is the ability of an object to have many implementations. Encapsulation is to hide the implementation details from users and also known as data hiding. Abstract Classes cannot be instantiated and can have both abstract and concrete classes. Casting Object is taking an object from one type and converting into other classes. Consists of up casting and down casting objects. I handle the search part of the application which involves Encapsulation. For example, in the Search Object there is a SearchStudentID(StudentID:String,SearchType:Int) method. The user only need to input the Search Value and the Search Type to the method and the method implementation is hidden from the user. We can see other concepts being applied by other members of my group in their respective responsibilities. Aggregation and has-a relationship can be seen between ReadFile Object and StudentData Class in this assignment. Is-a-relationship, Inheritance and Method Overriding can be seen between Student and Special Student Classes. The problem we encountered with this assignment is we just beginning to learn Scala, although it uses OOP concepts similar to Java, the way Scala works and its syntaxes is significantly different compared to Java. We overcome it by referring to our practical classes and through the internet. Thus we used up a lot of time learning on how to create basic an application using basic Scala commands instead where the time could be used to create a more advance OOP features. The strength of our application is that we developed a Scala application with a working GUI with five features and implemented these OOP concepts Aggregation, Encapsulation, Method Overriding, and Inheritance, and Has-a and Is-a relationship. The weakness of our application is that we began our assignment before the introduction of Java FX Scene Builder and we hard code our GUI which remove the drag and drop functionality. Our application have minimal or no implementation of polymorphism, abstract classes, and object casting. Group Contribution: Goh Chia Jun 24%