Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
An assignment brief for a BTEC Level 5 HND Diploma in Computing Unit 20: Advanced Programming. The assignment requires students to examine and design solutions using Object-Oriented Programming (OOP) and Design Patterns. information on the advantages of using abstraction, encapsulation, inheritance, and polymorphism in OOP. Students are expected to design and build class diagrams using a UML tool and define class diagrams for specific design patterns.
What you will learn
Typology: Cheat Sheet
1 / 29
ASSIGNMENT 1 FRONT SHEET Qualification 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 GCS Class GCS0905B Assessor name LE NGOC THANH Student declaration I certify that the assignment submission is entirely my own work and I fully understand the consequences of plagiarism. I understand that making a false declaration is a form of malpractice. Student’s signature KHANG Grading grid P1 P2 M1 M2 D1 D
Grade: Assessor Signature: Date: Signature & Date:
ASSIGNMENT 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:
Scenario : 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 Pass Merit Distinction 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.
Table 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. ........................... Error! Bookmark not defined. Scenario............................................................................................... Error! Bookmark not defined. Use-case Diagrams: ........................................................................ Error! Bookmark not defined. Class Diagrams: ............................................................................... Error! Bookmark not defined.
. ........................................................................................................... Error! Bookmark not defined. Activity Diagram: ................................................................................. Error! Bookmark not defined. REFERENCES ......................................................................................................................................... 27
P1 Examine the characteristics of the object-orientated paradigm as well as the various class relationships.
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.
When 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.
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.
Definition
Example code:
+ Definition
Concept 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
special 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.
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.
Its 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.
P2 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 customers such as adding, deleting, updating and searching disc information.
Use-case Diagrams:
Class Diagrams:
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.
Figure 5: PopMusicDisc Class Diagram.
1. MusicDisc Class. ❖ Class Diagram: As previously stated, the MusicDisc class has the fundamental fields that other classes can inherit, such as: ➢ 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
class) to encapsulate the field and change the way other classes access this class, for 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.
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).
4. MusicDiscShop Class. ❖ Class Diagram. As previously stated, because it has a list of books and a CRUD function, the MusicDiscShop class is critical to the overall software. Here is the explanatory specification: ➢ 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
to provide the other id to prevent having two duplicated ids in the '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.