Object Oriented Programming

Gennaro PERCANNELLA Object Oriented Programming

0612700009
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
EQF6
COMPUTER ENGINEERING
2022/2023



OBBLIGATORIO
YEAR OF COURSE 3
YEAR OF DIDACTIC SYSTEM 2017
AUTUMN SEMESTER
CFUHOURSACTIVITY
324LESSONS
324EXERCISES
324LAB


Objectives
THE COURSE PRESENTS THE OBJECT ORIENTED PROGRAMMING PARADIGM. IT PROVIDES THE STUDENTS WITH THE COMPETENCES FOR BOTH THE COMPREHENSION OF THE DOCUMENTS OF DESIGN OF A SOFTWARE APPLICATION FORMALIZED THROUGH UML AND ITS IMPLEMENTATION USING THE JAVA PROGRAMMING LANGUAGE.

KNOWLEDGE AND UNDERSTANDING
FUNDAMENTAL CONCEPTS OF THE OBJECT ORIENTED PROGRAMMING PARADIGM: CLASSES AND OBJECTS, ENCAPSULATION, INHERITANCE, POLYMORPHISM. JAVA LANGUAGE: SYNTAX, EXCEPTION HANDLING, I / O, THREADS. OUTLINE OF EVENT-BASED PROGRAMMING FOR THE CREATION OF GRAPHICAL INTERFACES.

APPLYING KNOWLEDGE AND UNDERSTANDING
IMPLEMENT IN JAVA AN ALREADY DESIGNED SOFTWARE STARTING FROM ITS CLASS DIAGRAMS. ADOPTING THE CLASSES DEFINED IN THE STANDARD PACKAGES OF THE JAVA LIBRARIES. IMPLEMENT SIMPLE MULTITHREADED APPLICATIONS WITH GRAPHICAL INTERFACES.
Prerequisites
PREREQUISITES: IN ORDER TO ACHIEVE THE GOALS OF THE COURSE, IT IS REQUIRED A GOOD PROGRAMMING EXPERIENCE WITH THE C LANGUAGE.
PROPEDEUTICAL COURSES: ALGORITHMS AND DATA STRUCTURES
Contents
Didactic Unit 1: Introduction to object-oriented programming
(LECTURE/PRACTICE/LABORATORY HOURS 5/0/0)

1. ( 2 hours Lecture ): Introduction to the course. Programming paradigms.
2. ( 3 hours Lecture ): Abstraction. Maintainability, reusability, verifiability. Introductory elements of object-oriented programming: class, object, attribute, method. Information hiding.

KNOWLEDGE AND UNDERSTANDING: Understanding of the fundamental concepts of object-oriented programming.
APPLIED KNOWLEDGE AND UNDERSTANDING: Knowing how to interpret a project by means of a class diagram.



Didactic Unit 2: Fundamentals of Java language
(LECTURE/PRACTICE/LABORATORY HOURS 5/6/3)

1. ( 2 hours Lecture ): Introduction to the Java language.
2. ( 2 hours Lecture ): Memory allocation in Java
3. ( 1 hour Lecture and 2 hours of Exercise ): Public and private access modifiers. Main method. Array.
4. ( 2 hours Practice ): Exercises on classes, methods, arrays, main in Java.
5. ( 2 hours Practice): Strings in Java. Static and final specifiers. Overloading
6. ( 3 hours Laboratory ): Exercises on java classes, package and visibility.

KNOWLEDGE AND UNDERSTANDING: Understand the essential constructs of the Java programming language and its main features. Understand the use of access modifiers and the concept of method overloading.
APPLIED KNOWLEDGE AND UNDERSTANDING: Knowing how to develop simple projects in Java that involve the use of classes, methods, primitive types, arrays and strings.

Didactic Unit 3: Inheritance, interfaces and abstract classes in Java
(LECTURE/PRACTICE/LABORATORY HOURS 4/3/2)

1. ( 2 hours Lecture ): Aggregation, composition and inheritance.
2. ( 2 hours Lecture ): Upcast and abstract classes.
3. ( 3 hours Practice): Examples about abstract classes and interfaces in Java.
4. ( 2 hours Laboratory ): Exercises on inheritance, interfaces and abstract classes in Java.

KNOWLEDGE AND UNDERSTANDING: Understand the concept of inheritance and its importance in object-oriented programming.
APPLIED KNOWLEDGE AND UNDERSTANDING: Knowing how to develop simple Java projects that involve the use of inheritance through the use of interfaces, abstract classes and concrete classes.


Didactic Unit 4: Exceptions in Java and notes to Generics
(LECTURE/PRACTICE/LABORATORY HOURS 5/3/0)

1. ( 2 hours Lecture ): Introduction to the mechanism of exceptions. Checked exceptions in Java.
2. ( 3 hours Lecture ): Unchecked exception in Java. Introduction to Generics
3. ( 3 hours Practice ): Tutorial on exceptions in Java.

KNOWLEDGE AND UNDERSTANDING: Understand the concept of exception and its importance in the process of developing a software project. Knowing how to distinguish between controlled and uncontrolled exception. Understand the concept of generic type.
APPLIED KNOWLEDGE AND UNDERSTANDING: Knowing how to develop simple examples of projects in Java that involve the use of controlled and uncontrolled exceptions.


Didactic Unit 5: Collections in Java
(LECTURE/PRACTICE/LABORATORY HOURS 2/2/4)

1. ( 2 hours Lecture ): Introduction to Java Collection Framework
2. ( 2 hours Practice ): Java Collections Framework: Set, List, Map. Interfaces Comparable and Comparator.
3. ( 2 hours Laboratory ): Exercise on Java Collection Set and List.
4. ( 2 hours Laboratory ): Exercise on Java Maps.

KNOWLEDGE AND UNDERSTANDING: Understand the concept of collection and the fundamental differences between sets, lists and maps.
APPLIED KNOWLEDGE AND UNDERSTANDING: Knowing how to develop simple projects in Java language that involve the use of collections of different types. Knowing how to choose the most suitable collection to solve an assigned problem.


Didactic Unit 4: Exceptions in Java and notes to Generics
(LECTURE/PRACTICE/LABORATORY HOURS 5/3/0)

1. ( 2 hours Lecture ): Introduction to the mechanism of exceptions. Checked exceptions in Java.
2. ( 3 hours Lecture ): Unchecked exception in Java. Introduction to Generics
3. ( 3 hours Practice ): Tutorial on exceptions in Java.

KNOWLEDGE AND UNDERSTANDING: Understand the concept of exception and its importance in the process of developing a software project. Knowing how to distinguish between controlled and uncontrolled exception. Understand the concept of generic type.
APPLIED KNOWLEDGE AND UNDERSTANDING: Knowing how to develop simple examples of projects in Java that involve the use of controlled and uncontrolled exceptions.


Didactic Unit 5: Collections in Java
(LECTURE/PRACTICE/LABORATORY HOURS 2/2/4)

1. ( 2 hours Lecture ): Introduction to Java Collection Framework
2. ( 2 hours Practice ): Java Collections Framework: Set, List, Map. Interfacce Comparable e Comparator.
3. ( 2 hours Laboratory ): Exercise on Java Collection Set and List.
4. ( 2 hours Laboratory ): Exercise on Java Maps.

KNOWLEDGE AND UNDERSTANDING: Understand the concept of collection and the fundamental differences between sets, lists and maps.
APPLIED KNOWLEDGE AND UNDERSTANDING: Knowing how to develop simple projects in Java language that involve the use of collections of different types. Knowing how to choose the most suitable collection to solve an assigned problem.



DIdactic Unit 6: Input/Output in Java
(LECTURE/PRACTICE/LABORATORY HOURS 3/2/0)

1. ( 3 hours Lecture ): Input/Output in Java. Organization of the java.io package. Character and binary reading. Serialization.
2. ( 2 hours Practice ): I/O Exercise

KNOWLEDGE AND UNDERSTANDING: Understand the fundamental concepts underlying the input output management mechanisms in Java. Understand the concept of serialization.
APPLIED KNOWLEDGE AND UNDERSTANDING: Knowing how to develop simple examples in Java that involve reading and writing through character streams or binary.

Didactic Unit 7: Multithreading in Java
(LECTURE/PRACTICE/LABORATORY HOURS 4/3/0)


1. ( 2 hours Lecture ): Introduction to threads in Java. Thread and Runnable. Keyword synchronized.
2. ( 2 hours Lecture ): Active wait management in Java with sleep, join, wait, notify methods.
3. ( 3 hours Practice ): Examples on threads in Java

KNOWLEDGE AND UNDERSTANDING: Understand the fundamental concepts of multithreaded concurrent programming. Understand the producer-consumer model and the problem of active waiting.
APPLIED KNOWLEDGE AND UNDERSTANDING: Knowing how to develop simple examples in Java that involve the use of threads.

Didactic Unit 8: Graphic User Interfaces in Java
(LECTURE/PRACTICE/LABORATORY HOURS 8/6/2)


1. ( 2 hours Practice ): Nested classes
2. ( 2 hours Lecture ): Introduction to JavaFX
3. ( 2 hours Lecture ): JavaFX binding and observability
4. ( 2 hours Lecture ): MVC pattern - Java FX e FXML
5. ( 3 hours Practice): Tutorial on Java FXML and background threads
6. ( 3 hours Practice): Concurrency in JavaFX - Task and Service
7. ( 2 hours Laboratory ): Summary exercise on JavaFX

KNOWLEDGE AND UNDERSTANDING: Understand the concept of event and the fundamental principles underlying the development of graphical interfaces. Understand the concept of observability and binding, Understand the Model View Controller pattern. Understand the importance of secondary threads and their interaction with the main thread in JavaFX GUI.
APPLIED KNOWLEDGE AND UNDERSTANDING: Knowing how to develop projects in Java that involve the use of graphical interfaces in

TOTAL LECTURE/PRACTICE/LABORATORY HOURS 36/25/11
Teaching Methods
IN ORDER TO PROVIDE THE STUDENT WITH THEORETICAL AND METHODOLOGICAL KNOWLEDGE AND WITH PRACTICAL PROJECT SKILLS, THE COURSE WILL CONTAIN BOTH LECTURES AND INTERACTIVE EXERCISES.
CLASSROOM LESSONS WILL COVER ALL THE TOPICS OF THE COURSE.
IN ORDER TO PARTICIPATE TO THE FINAL ASSESSMENT AND TO GAIN THE CREDITS CORRESPONDING TO THE COURSE, THE STUDENT MUST HAVE ATTENDED AT LEAST 70% OF THE HOURS OF ASSISTED TEACHING ACTIVITIES.
Verification of learning
THE EXAMINATION AIMS AT EVALUATING, AS A WHOLE: THE KNOWLEDGE AND UNDERSTANDING OF THE CONCEPTS PRESENTED IN THE COURSE, THE ABILITY TO APPLY THAT KNOWLEDGE TO SOLVE PROBLEMS THROUGH THE ADOPTION OF THE OBJECT ORIENTED PROGRAMMING PARADIGM AND OF THE USE OF THE JAVA LANGUAGE; INDEPENDENCE OF JUDGMENT, COMMUNICATION SKILLS AND THE ABILITY TO LEARN. THE EXAMINATION IS COMPOSED BY A PRACTICAL TEST AND AN ORAL ONE.
THE PRACTICAL EXAMINATION IS AIMED AT EVALUATING THE ABILITY TO IMPLEMENTS PROGRAMS IN JAVA AND IS REALIZED DIRECTLY ON A PC. MINIMAL REQUIRED ABILITY ARE THE IMPLEMENTATION OF A PROGRAM FOR SOLVING THE PROPOSED PROBLEM WITHOUT SIGNIFICANT SYNTACTIC ERRORS; VICE VERSA MAXIMAL ABILITIES ARE THOSE OF IMPLEMENTING EFFICIENT PROGRAMS USING THE MOST APPROPRIATE ALGORITHMS AND DATA STRUCTURES, CORRECTLY EXPLOITING THE LIBRARIES OF THE LANGUAGE. STUDENTS WHO PASSED THE CONTESTS DURING THE COURSE ARE DIRECTLY ADMITTED TO THE ORAL EXAMINATION.
THE ORAL EXAMINATION WILL COVER ALL THE TOPICS OF THE COURSE AND ASSESSMENT WILL TAKE INTO ACCOUNT THE KNOWLEDGE DEMONSTRATED BY THE STUDENT AND THE DEGREE OF ITS DEPTH, PROVEN ABILITY TO LEARN, THE QUALITY OF THE PRESENTATION.
IN THE FINAL EVALUATION, EXPRESSED IN THIRTIETHS, THE EVALUATION OF THE PRACTICAL EXAMINATION WILL ACCOUNT FOR 60% WHILE THE ORAL TEST FOR 40%. THE CUM LAUDE MAY BE GIVEN TO STUDENTS WHO DEMONSTRATE THAT THEY CAN APPLY THE KNOWLEDGE AUTONOMOUSLY EVEN IN CONTEXTS OTHER THAN THOSE PROPOSED IN THE COURSE.
Texts
CLAUDIO DE SIO CESARI, “IL NUOVO JAVA. GUIDA COMPLETA ALLA PROGRAMMAZIONE MODERNA”, HOEPLI INFORMATICA

TESTI ED URL DI CONSULTAZIONE ED APPROFONDIMENTO
- BRUCE ECKEL, ""THINKING IN JAVA (4TH ED.)"", PRENTICE HALL
- HERBERT SCHILDT, “JAVA – THE COMPLETE REFERENCE (9TH ED.), ORACLE PRESS
- JAVA TUTORIALS - HTTP://DOCS.ORACLE.COM/JAVASE/TUTORIAL/

SUPPLEMENTARY TEACHING MATERIAL WILL BE AVAILABLE ON THE UNIVERSITY E-LEARNING PLATFORM (HTTP://ELEARNING.UNISA.IT) ACCESSIBLE TO STUDENTS USING THEIR OWN UNIVERSITY CREDENTIALS.
More Information
THE COURSE IS HELD IN ITALIAN
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2024-08-21]