1651 assignment 1 (pass) 1651 assignment 1 (pass) 1651 assignment 1 (pass) 1651 assignment 1 (pass) 1651 assignment 1 (pass) 1651 assignment 1 (pass) 1651 assignment 1 (pass) 1651 assignment 1 (pass) 1651 assignment 1 (pass) 1651 assignment 1 (pass) 1651 assignment 1 (pass) 1651 assignment 1 (pass) 1651 assignment 1 (pass) fpt greenwich
Trang 1Assessor name: LE NGOC THANH
Learner’s name: Đào Vĩnh Khang
Trang 2Qualification BTEC Level 5 HND Diploma in Computing
Unit number and title Unit 20: Advanced Programming
Submission date 14-02-2022 Date Received 1st submission 14-02-2022
Re-submission Date Date Received 2nd submission
Student Name DAO VINH KHANG Student ID GCS200222
Class GCS0905B Assessor name LE NGOC THANH
Trang 3Grade: Assessor Signature: Date:
Signature & Date:
Trang 4ASSIGNMENT 1 BRIEF
Qualification BTEC Level 5 HND Diploma in Business
Unit number Unit 20: Advanced Programming
Assignment title Examine and design solutions with OOP and Design Patterns
Academic Year 2021 - 2022
Unit Tutor LE NGOC THANH
Issue date 28 November 2022 Submission date
IV name and date
Submission Format:
Format: The submission is in the form of a group written report This should be written in a concise,
formal business style using single spacing and font size 12 You are required to make use of headings, paragraphs and subsections as appropriate, and all work must be supported with research and referenced using the Harvard referencing system Please also provide a bibliography using the Harvard referencing system
Submission Students are compulsory to submit the assignment in due date and in a way requested by the
Tutors The form of submission will be a soft copy in PDF posted on corresponding course of http://cms.greenwich.edu.vn/
Note: The Assignment must be your own work, and not copied by or from another student or from
books etc If you use ideas, quotes or data (such as diagrams) from books, journals or other sources, you must reference your sources, using the Harvard style Make sure that you know how to reference properly,
and that understand the guidelines on plagiarism If you do not, you definitely get fail
Assignment Brief and Guidance:
Trang 5Scenario: You have recently joined a software development company to help improve their documentation of their in-houses
software libraries which were developed with very poor documentation As a result, it has been very difficult for the company to utilise their code in multiple projects due to poor documentation Your role is to alleviate this situation by showing the efficient
of UML diagrams in OOAD and Design Patterns in usages
Tasks
You and your team need to explain characteristics of Object-oriented programming paradigm by applying Object-oriented analysis and design on a given (assumed) scenario The scenario can be small but should be able to presents various characteristics of OOP (such as: encapsulation, inheritance, polymorphism, override, overload, etc.)
The second task is to introduce some design patterns (including 3 types: creational, structural and behavioral) to audience by giving real case scenarios, corresponding patterns illustrated by UML class diagrams
To summarize, you should analyze the relationship between the object-orientated paradigm and design patterns
The presentation should be about approximately 20-30 minutes and it should be summarized of the team report
Learning Outcomes and Assessment Criteria
LO1 Examine the key components related to the object-orientated programming paradigm, analysing
design pattern types
P1 Examine the characteristics
of the object-orientated
paradigm as well as the
various class relationships
M1 Determine a design pattern
from each of the creational, structural and behavioural pattern types
D1 Analyse the relationship
between the object-orientated paradigm and design patterns
LO2 Design a series of UML class diagrams
P2 Design and build class diagrams
using a UML tool
M2 Define class diagrams for specific
design patterns using a UML tool
D2 Define/refine class diagrams
derived from a given code scenario using a UML tool
Trang 7Table Content
Contents
ASSIGNMENT 1 FRONT SHEET 2
ASSIGNMENT 1 BRIEF 4
P1 Examine the characteristics of the object-orientated paradigm as well as the various class relationships 9
Object-oriented programming 9
Abstract calculation concept 11
Encapsulation: 12
The concept of inheritance 13
Concept of polymorphism 14
Features of Interface 15
P2 Design and build class diagrams using a UML tool 18
Information Gathering: 18
Scenario 18
Use-case Diagrams: 19
Class Diagrams: 21
1 MusicDisc Class 23
2 EdmMusicDisc Class 24
3 PopMusicDisc Class 24
4 MusicDiscShop Class 25
Sequence Diagram: 28
REFERENCES 30
Trang 9P1 Examine the characteristics of the object-orientated paradigm
as well as the various class relationships
Object-oriented programming
Object-oriented programming (OOP) is one of the very important programming techniques nowadays It is applicable in most practical construction applications at businesses Most popular programming languages and programming frameworks such as Java, C# and
.NET support object-oriented programming Most programmers have learned about
objectoriented programming in universities, but the basic principles of object-oriented
programming sometimes do not know how to misuse the wrong philosophy of
programming object-oriented
In this article, I will summarize the basic principles of object-oriented programming to help
you get an overview of OOP and how convenient it is
What is object-oriented programming?
Object-oriented programming is a programming technique that allows programmers to create
objects in code that abstract actual objects in life This approach is currently very successful and has become one of the software development templates, especially for software using on
business
Trang 10When developing applications using OOP, we will define classes (classes) to model actual
objects In the application these classes will be initialized into objects and during the time the application runs, the methods of this object will be called
What is the class that defines the object: include methods and properties An object is just an instance of the class Classes interact with each other by the public API: its set of
methods, its public properties
Trang 11Abstract calculation concept
Abstraction in Java is a non-specific property that only names the problem It is a process of hiding the inner activities and only showing the essential features of the object to the user For example, if a person uses his phone to send a message, he will enter the text of the message, the recipient's information and press the send button When he started sending the message,
he didn't know what was going on during the sending process but only knew if the result of the message was successfully sent to the recipient So in this example, the process of sending the message has been hidden and only shows the functions that the user needs is the function of entering the message content, the recipient information, the result of sending the message successfully or failure That is abstraction
Advantages of using abstraction for programming:
Abstraction allows programmers to eliminate the complexity of an object by only giving the object's needed attributes and methods in programming, improving the maintainability of the system
Abstraction helps us focus on the essential core of the object rather than being concerned with how it works
Abstraction provides many extended features when used in combination with polymorphism and inheritance in object-oriented programming
Java abstracts through abstract classes and interfaces In this article, I will guide you to learn about abstract classes and abstract methods
Trang 12Encapsulation:
Definition
- This property does not allow the user to change the intrinsic state of an object Only the object's internal methods allow to change its state In any way, allowing the
external environment to affect the internal data of an object is entirely up to the
person writing the code This is a property that ensures the integrity of the object.Encapsulation enables a group of properties, methods and other members to be
considered a single unit or object
Trang 13Example code:
The concept of inheritance
+ Definition
- This feature allows an object to have the properties that other objects already
have through inheritance This allows objects to share or expand available features without having to redefine However, not all object-oriented languages have this property
- Multi-level Hierarchy: A derived class can have only one direct base class
However, inheritance is transitive If ClassC is derived from ClassB, and ClassB is derived from ClassA, ClassC inherits the members declared in ClassB and ClassA Example:
Trang 14Concept of polymorphism
Polymorphic techniques in object-oriented programming languages enable programmers to
increase the ability to reuse code written in a general way and can change behavior flexibly
depending on the type of object
Polymorphism in Java is understood in each case, different circumstances, the object has
different morphology depending on the context The polymorphic object is considered to be a
Trang 15special object because sometimes it becomes another object and sometimes it becomes
another object (depending on the situation) This "role-playing" in different objects makes it
possible for the original polymorphic object to perform different actions of each specific object
Features of Interface
The interface has only abstract methods
Interface is a technique to achieve complete abstraction and multiple inheritance in Java
The interface always has a modifier: public interface, whether you explicitly specify it or not
If there are fields, they are: public static final, whether or not you specify them
Trang 16Its methods are abstract methods, meaning there is no function body, and all modifiers are: public abstract, whether you declare it or not
Interface has no constructor
An interface is not a class Writing an interface is like writing a class, but they have two different definitions A class describes the properties and behavior of an object An interface contains the behaviors a class implements
Unless an interface implementation class is an abstract class, all of the interface's methods need
to be defined in the class
The Java Compiler adds the keyword public abstract before the interface method and public static final keywords before data members
Trang 18P2 Design and build class diagrams using a UML tool
Information Gathering:
Scenario
My brother recently asked me to help them build a record management platform for their business I plan to develop an application that will keep a list of music discs available in the store This software allows users to add new discs by entering disc information such as ID, name, artist, description, year and price In addition, the system contains tasks requested by
Trang 19Use-case Diagrams:
Use case diagram: Here the actors are the user and the admin Each use case comes with the description, actors, pre/post conditions and the flow of control Here the admin is the one that maintains the application
Trang 20Coming to the conditions on the use cases, the implicit one is that the user must be logged into the system to access recommendations Flow of control would be the inherent activies of each use case like the processing of the request as soon as the user enters a query for searching the music, the compiling of the list generated from the scores and showing those with high values etc
Trang 21Class Diagrams:
Trang 22
Figure 3: MusicDisc Class Diagram
❖ Class EdmMusicDisc is the class which is inherits from MusicDisc class, this class contains Price which is overrides the property Price from class MusicDisc and it also contains three methods GetTitle(), GetType() and DisplayMusicInfo() which
is overrides the abstract method abstract from class MusicDisc
Figure 4: EdmMusicDisc Class Diagram
❖ Class PopMusicDisc is the same as class EdmMusicDisc because it also inherits from class MusicDisc
Trang 23➢ Field includes id, name, artist, description, year and price
➢ Properties include Id, Name, Artist, Description, Year, and Price (this property with the keyword virtual appears to mean that it can be overridden by children
Trang 24for example, other classes will access the id field via its property Id
In addition, this MusicDisc Class is also an abstract class and it have three methods for inherited classes to define themselves which is GetTitle() to get the title of the disc, GetType() to get the type of the disc and
DisplayMusicInfo() to display the info of the disc
2 EdmMusicDisc Class
❖ Class Diagram
As previously stated, this class is the child class of the MusicDisc class, or we can say it
employs inheritance, that is one of the characteristics of OOP; it inherits everything contained
in the parent class (MusicDisc class), and I also highlighted that the MusicDisc class contains the property 'Price' with the 'virtual' key word for child class having the capability to modify the logic within it (this is a polymorphism characteristic of OOP) Last but not least, it also
contains three methods GetTitle(), GetType() and DisplayMusicInfo() which is overrides the abstract method abstract from class MusicDisc
3 PopMusicDisc Class
❖ Class Diagram
Trang 25
As previously stated, this is also the child class of MusicDisc and this class is the same as EdmMusicClass because it also inherits everything in parent class (MusicDisc Class)
➢ MusicDiscs: this is the list of items that have a music disc within
➢ CheckID(): Because each music disc's id is unique, I wrote this method to
check if the id is duplicated or not; if duplicated, the user will be prompted
Trang 26'musicDiscs' list
➢ AddMusicDisc(): this is the method to add more disc into the list
➢ PrintAllDisc(): this is the method to display all of the disc that exist in
the list
➢ PrintAllEdm(): this is the method to display all of the EDM music disc
that exist in the list
➢ PrintAllPop(): this is the method to display all of the POP music disc that
exist in the list
➢ UpdateById(): It is difficult to update music discs by name or artist since
they can be duplicated, but each disc's id is unique, thus I created this method to update music discs by id
➢ DeleteById(): This method is the same as Update because it is also
difficult to remove disc by name or artist since they can be duplicated It would be rather amusing if I opted to remove the disc by name because I may delete the wrong disc because there are many songs with the same name in the world nowadays, but each disc's id is unique, thus I created this method to delete music discs by id
➢ GetMusicDiscById(): As I mentioned from update and delete method
that each disc's id is unique, so I designed this method to help users discover the music disc in the most convenient way possible
➢ GetMusicDiscByName(): Each music disc has its own name, but their
names can be the same, so I created this method to find discs by their names in order to keep track of how many discs with the same name are entered
➢ GetMusicDiscByArtist(): Each disc has its own artist name, and they can
write many songs on each disc, so I devised this system for finding discs by their creator's name in order to keep track of how many discs that artist has composed