Software and Programming II
Overview
- Credit value: 15 credits at Level 5
- Module convenor and tutor: Paul Nulty
- Prerequisite: Software and Programming I
- Assessment: problem-solving worksheets (50%) and a two-hour examination (50%)
Module description
This module is a continuation of the studies presented in Software and Programming I, focusing on the use of object-oriented methods for problem solving. Object-oriented programming languages require a different approach to software design from the traditional functional decomposition approach of procedural languages. Object-oriented systems are described in terms of independent objects and their interrelationships. Such systems can provide considerable potential for reusability, extensibility, and robustness, assisting in the process of programming-in-the-large.
Indicative module content
- Review of basic Java programming and the materials covered in Software and Programming I
- Extended control structures: the switch statement, loops with break and continue
- Basics of enumeration types
- Arrays and ArrayLists; the enhanced for loop; two-dimensional arrays
- Inheritance and polymorphism; overriding instance methods; the access modifier protected and the default access modifier; the type Object; abstract classes; interfaces and multiple inheritance; the instanceof operator and casting non-primitive types; parametric and ad-hoc polymorphism
- Input and output
- Test-driven development
- Exceptions and exception handling with try and catch; program correctness: throwing an exception; RuntimeExceptions and the throws clause; user-defined exception classes
- Basics of Java Collections
- Foundations of object-oriented analysis and design in Java: discovering classes, relationships between classes
Learning objectives
By the end of this module, you will be able to demonstrate:
- an understanding of object-oriented programming concepts and their role in program design and implementation, viz. encapsulation, polymorphism, inheritance and message passing
- elementary use of Java Collections
- the ability to write object-oriented programs using an object-oriented programming language
- exception handling for debugging and to promote program robustness
- use of appropriate basic data structures such as arrays, linked lists
- an elementary understanding of software testing and the ability to write simple unit tests
- the ability to decompose a problem into appropriate objects and activities and to understand how to then embody these concepts in the construction of a program incorporating appropriate classes, data members and methods
- the ability to manage time so as to design and implement a piece of software to a prescribed deadline.