Academic year 2013-14

Object-Oriented Programming

Degree: Code: Type:
Bachelor's Degree in Computer Science 21414 Compulsory subject, 2nd year
Bachelor's Degree in Telematics Engineering 21721 Compulsory subject, 2nd year
Bachelor's Degree in Audiovisual Systems Engineering 21603 Compulsory subject, 2nd year

 

ECTS credits: 4 Workload: 100 hours Trimester: 1st

 

Department: Dept. of Information and Communication Technologies
Coordinator: Anders Jonsson
Teaching staff:

Anders Jonsson, Martí Sànchez, Damir Lotinac, Filippos Kominis, Javier Segovia

Language:

Anders Jonsson, Javier Segovia: Spanish

Martí Sànchez: Catalan

Damir Lotinac, Filippos Kominis: English (Spanish)

Timetable:
Building: Communication campus - Poblenou

 

Introduction

Object Oriented Programming is a course in the area of Programming Languages, closely related to Foundations of Programming as well as Data Structures and Algorithms (the latter pertaining only to the degree in Computer Engineering). The starting point is structural programming and basic algorithmics (knowledge acquired in the course Foundations of Programming), and the aim is to introduce the students to the design and development of high-level programs by means of the concept of objects.

The course requires a basic knowledge of programming concepts and the object-oriented programming paradigm is mainly focussed on improving the design of programs. This way, the student is introduced to the creation of programs from a more abstract point of view than basic algorithmics, promoting a well-structured design aimed at solving the most relevant aspects of the problem while specific details are left out. This way, unlike courses focussing solely on procedural programming, where the syntax and semantics is essential, this course is oriented towards the design and structure of programs as a whole. However, the programming language Java is introduced and used as a tool to implement the designed programs.

The principal objective of the course is to study the necessary principles for modelling a program using different components that have to be combined to solve a concrete problem. Additionally, this involves being able to reuse existing components while constructing new programs. Different techniques that allow defining and constructing such components are introduced and studied.The organization of the course is as follows: The first part introduces concepts and fundamental principles of object-oriented programming such as abstraction, encapsulation and reuse. The object is defined as a tool that models and describes an entity capable of carrying out a series of concrete tasks. It is also shown how to apply the concept of task delegation to coordinate the operation of the different objects of a program. The second part introduces advanced concepts such as inheritance, polymorphism, overriding and interfaces, placing an especial emphasis on application and use in the construction of object-oriented programs. The third and last part teaches how to apply all concepts together to solve complex problems, using modelling techniques to establish objects and their relationships as well as reuse of components. To exemplify these techniques the concrete solutions to several realistic problems are studied.The course is divided into the following activities:

- Theory sessions: where different concepts and principles of object-oriented programming are introduced.

- Lab sessions: where students, working in pairs, have to implement programs in Java that solve specific problems, using the techniques introduced in the theory sessions.

- Seminars: where students, working in pairs, have to design and model solutions to specific problems using objects, solutions that are lated implemented as Java programs in the lab sessinos.

- Individual exercices: where the students have the opportunity to solve programming exercices individually, thus fomenting the concepts of object-oriented programming.

At the end of the course the student is expected to:

- Implement programs using a high-level programming language (particularly Java).

- Understand the structure of an existing program designed by means of objects.

- Model a solution based on objects that solves a specific problem.

- Reuse existing components and use/implement interfaces.

Learning goals

The principal objective of the course is acquiring the necessary competencies to work in software development (implementation and design) using the object-oriented paradigm. This includes partial objectives such as acquiring the capability of abstraction necessary to encapsulate partial solutions inside an object, correcty related different objects within a program to arrive at a well-structured solution to a given problem, and reuse existing components when developing a new program. In parallel, another goal is to acquire elemental knowledge of a high-level programming language as Java. Finally, another objective is to understand and sketch diagrams that reflect the structure of an object-oriented program.

Concretely, at the end of the course the student is expected to:

 

Prerequisites

This course assumes basic knowledge of the foundations of basic algorithmics and structural programming, as well as the capacity to write programs and solve problems using high-level imperative programming languages (competencies acquired in the course Foundations of Programming).

 

Associated competences

Cross-competenciesSpecific competencies

Instrumental

1. Capacity to analyze a problem

2. Capacity of abstraction

Interpersonal

3. Understand existing solutions or those proposed by others

Systemic

4. Creation of highly structured solutions

5. Use of documentation during development

6. Reuse of solutions

Others

7. Collaborative work during software development

1. Understanding the role of the object in the organization of a program

2. Capacity to design solutions using objects

3. Knowledge of basic and advanced concepts of object-oriented programming (inheritance, abstraction, polymorphism)

4. Reuse existing components in a new program

5. Understand the concept of interface to relate objects

6. Read and write code in Java

 

Assessment

The course evaluation is based on measuring the student competencies with respect to the content introduced. The following tools are used to measure the student competencies:

Each task is evaluated and graded using a numeric value between 0 and 10. The following table presents a summary of the evaluation:

 RepeatableResponsible Agent
Grouping%
Type of evaluation

 Repeatable

Not repeatable

Teacher

Autoevaluation Coevaluation

Individual

Groups

 

Continuous

 

Seminar solutions

Seminar teacher

   

 

X 

10%

Training

 

Lab solutions

Lab session teacher

     

X

30%

Continuous  

Individual exercices

Exercices teacher

    X  

10%

Final

Final exam

 

Theory teacher

   

X

 

50%

A grade of 50% or higher on the final evaluation is necessary to pass the course. A passing grade (5,0 or higher out of 10) is also required for each of the lab solutions, seminar solutions and final exam.

Neither seminar solutions nor lab solutions are repeatable and thus have to be handed in at the indicated date during the trimester that the course is offered.

The final exam consists of a theory evaluation that measures the knowledge of the course content, including content from lab sessions and seminars. In the case that a student does not pass the final exam with a grade of 5,0 or higher (out of 10), the student can repeat the exam using the same evaluation criteria. A student is not allowed to participate in the makeup exam unless they have passed the lab sessions and seminars.

 

Contents

ConceptsProcedures
Topic 1. Introduction: the concept of the object

1. Intuitive definition of an object

2. Problem solving using objects

3. Task delegation

4. Establishing relationships between objects

5. The use of objects in programming

 
Topic 2. The object-oriented paradigm

1. Class

2. Instance

3. Class hierarchy

4. Abstraction

5. Encapsulation

Define classes as well as their attributes and methods

Topic 3. Fundamental techniques: inheritance and polymorphism

1. Inheritance

2. Polymorphism

3. Overloading

4. Overriding

Inherit the members of a superclass

Modify the behavior and structure of a class

Topic 4. Advanced concepts: interfaces and abstract classes

1. Abstract methods

2. Abstract classes

3. Interfaces

4. Connecting objects using interfaces

Design classes using abstract methods implemented in subclasses

Develop interfaces to organize a program

Implement interfaces

Topic 5. Object modelling and relationships between objects

1. Class design

2. Object modelling techniques

3. Relationships between objects

4. Combine objects to solve concrete problems

Design solutions to problems using multiple classes

Implement programs based on a solution modelled using objects

Topic 6. Reuse and study of problems solved using objects

1. The concept of reuse

2. Implementation of interfaces

3. Cases studies of specific problems

Use existing components when developing new programs

Reuse components to create new components

Use and implementation of interfaces based on a specific API

 

Methodology

Methodology of the course

This section summarizes the methodology used in the course. This guide is especially useful for the student in order to learn about the different activities planned, and thus help organize the studies. All activities belong to one of the following four categories:

Theory sessions

During theory sessions the student is given a face-to-face explanation of theoretical concepts. These sessions are complemented by class notes that the student can go over outside class.

All students of a given group are assigned to the same theory session.

Lab sessions

The lab sessions consist of two types of activities:

During the first activity the students are given a face-to-face explanation of the specific goals that are addressed during the session, as well as the technical knowledge necessary to carry out the proposed task.

During the second activity the students put in practice the acquired knowledge to carry out the proposed task. This activity continues outside class until the specific goals are met.

During lab sessions the students work together in pairs or individually.

Seminars

During the seminars the students are presented with different educational exercices that they have to attempt to solve correctly. This activity is carried out completely in the classroom, and the goal is to help the student to acquire the abstract reasoning necessary to design a solution.

Each seminar consists of a small subgroup of students. The students have to hand in the solution to the proposed exercice at the end of class, and receives feedback at the beginning of the next session.

Autonomous learning

To carry out certain activities, such as implementing a given program or preparing the next seminar, the student is expected to take responsability for acquiring the knowledge necessary to complete the activity. In particular, this includes reading documentation, recommended bibliography and other guides for the correct implementation of programs. Several seminars assumes that the knowledge from the theory sessions has been accurately acquired.

Moreover, the students are given the opportunity to solve individual programming exercices that are to be handed in at specified dates.

Team activities

The team activities are mostly related to seminars and lab sessions. However, these activities are only carried out in class, and the students are responsible for completing some of the team activities outside class.

 

Resources

Basic bibliography (paper and electronic support)

Theory:

Meyer: Object Oriented Software Construction (available in Spanish: "Construcción de Software Orientado a Objectos")
Horstmann: Object Oriented Design and Patterns

Lab sessions:

Eckel: Thinking in Java (available in Spanish: "Piensa en Java" as well as online)
Arnold, Gosling, Holmes: Java Programming Language (available in Spanish: "El lenguaje de programación Java")

Complementary bibliography (paper and electronic support)

Netbeans: https://netbeans.org/kb/

Educational resources and course material

In the course page of the Aula Global (Moodle) the following material is published: