4. Develop a non-trivial object-oriented program that contains a graphical user interface, thereby demonstrating the ability to deal with simple event-driven programming.

5. Demonstrate the ability to apply the concepts of composition, inheritance and polymorphism.

6. Demonstrate in object-oriented code how to handle error conditions.

7. Demonstrate in object-oriented code how to store and retrieve data to and from files.

Aims

This module will build on CS12020 Introduction to Programming. It will explore the use of the object-oriented paradigm and its embodiment in the Java programming language. It will be taught in conjunction with CS10720 - Problems and Solutions, and will define and use UML when modeling requirements and design.

Brief description

This module will build on CS12020 Introduction to programming. In particular, it will explore the use of the object-oriented paradigm and its embodiment in the Java programming language. UML (Unified Modeling Language) notation will be defined and used as appropriate. It provides a foundation for Part 2 modules that use object-oriented languages, such as CS21120 - Data Structures and Algorithms, and CS22120 - The Software Development Life Cycle.

Content

This module's teaching pattern each week consists of two 2-hour lecturer-led teaching sessions in a large computer laboratory. This enables small presentations to be followed by related practical exercises and quizzes. Students also have a 1-hour small-group tutorial for team-based design and coding exercises.
Week 1 - Introductory workshops as a taster of many of the topics to be covered during the module: The idea of class and object. Storing data in instance variables. Methods. Java Virtual Machine and bytecode. Applications running from an integrated development environment tool. Review of concepts from semester one as used in Java: variables, conditional tests, loops.
Week 2 - Basic concepts. Exploration of objects and classes. The UML class diagram. Instance variables, methods and parameters, object diagrams. Relationships between classes and their representation in class diagrams. Mapping a simple procedural program from semester one to a Java program.
Week 3 - Review of basic concepts. Reading from the keyboard. Null references. Running programs from the command line. Javadoc comments. Naming conventions. Tutorial on the use of the Classes, Responsibilities and Collaborations technique.
Week 4 - Types and equality. Searching, loading and saving. Reading from and writing to files. Iteration over Java Collections. Java arrays. UML sequence diagrams.
Week 5 - Access modifiers. Packages and JAR files. The static modifier. Revisiting abstraction and encapsulation. Consolidation: design and implementation. The role of use-case diagrams and their relationship to class diagrams and implementation.
Weeks 7 and 8 - Focus on inheritance, polymorphism, interfaces and abstract classes. Overriding the equals method. Exception classes.
Weeks 9 and 10 - Graphical user interfaces. Event-driven programming. Separation of concerns.
Week 11 - review

Module Skills

Skills Type

Skills details

Application of Number

Inherent in the subject

Communication

Communication in a technical sense through UML diagrams

Improving own Learning and Performance

From feedback from staff and fellow students through peer assessment

Information Technology

Inherent in the subject

Personal Development and Career planning

The module will provide more information on what software engineers do

Problem solving

Solving design and coding problems

Research skills

Basic computer use

Subject Specific Skills

UML diagrams, code development skills, use of integrated development environments