Base Knowledge
- This course assumes that the students have the knowledge related to the Object Oriented Programming course.
Teaching Methodologies
- The curricular unit has theoretical and practical classes
- In the theoretical classes, an expository methodology is used for the presentation of theoretical concepts of the subject with examples of application
- In practical classes, students apply the knowledge acquired in theoretical classes and/or practical classes and exercise their skills by developing applications and a project in groups of three. The teachers supervise the development, clarifying doubts and providing guidance on the options taken.
Learning Results
- Acquire programming skills in Java language, consolidating the fundamental knowledge of object-oriented programming previously obtained.
- Acquire knowledge about Software Design Patterns in the development of applications.
- Acquire the ability to develop appIications for console and also for graphical environments, based on events.
- Develop abilities in data structures organization, their suitable use in medium-sized applications, structuring them in an extensible and rational way, separating the data from its visual representation and user interaction.
Program
- Main features of the Java language
- Transition from C/C++ to Java
- Primitive types
- Arrays of primitive types
- Operators
- Execution control instructions
- Classes
- Objects and references
- The Garbage Collector
- Constructors
- The keyword this
- Constructors that call constructors
- Static members
- Overloaded methods
- The finalize() method
- Arrays of objects
- Inner and nested classes
- Packages
- Components organization
- Access modifiers
- Composition and inheritance
- Composition
- Inheritance
- Choose between composition and derivation
- The super keyword
- The final keyword
- Polymorphism
- Upcasting
- Object class
- Abstract classes
- Interfaces
- Collections
- Interfaces derived from Collection
- Some concrete implementations
- Exceptions
- Files
- Graphic interface
- Introduction to JavaFX
- Applications with graphical interface
- Event-based programming
- Components, events and listeners
- Software design patterns
- MVC, MVP and MVVM
- State machine
- Singleton
- Object Factory
- Command
- Memento
- Facade
- Other design patterns
- Introduction to software testing
- Unit Testing
- Dependecy Injection in testing
Curricular Unit Teachers
Álvaro Nuno Ferreira Silva SantosGrading Methods
Written Test 1:
- Focus: Java
- Date: To be determined, preferably between the 7th and 9th week of classes
- Weight: 6 points
Written Test 2:
- Focus: Patterns (in Java) and JavaFX
- Date: End of the semester, preferably in the last week of classes
- Weight: 6 points
Practical Work:
- Groups of up to 3 students from the same class
- Exception: Working students or Erasmus students may form groups with others of the same status, regardless of class
- Group formation must be communicated by the fourth week of classes
- Carried out in stages and partially during class time
- The grades for each stage will take into account the quality of the work, student participation in the tasks, and class attendance
- The final presentation of the assignment, the report, and the corresponding defense will take place in the last week of classes
- Weight: 6 points
Theoretical Classes:
- Mini-activities
- Grade: up to 0.2 points per activity, up to a maximum of 2 points
- Mini-activities may only be completed by students who are present in class or who hold working-student, Erasmus, or equivalent status
Note: Working-student status or similar will be verified through information available in Nónio.
Internship(s)
NAO
Bibliography
- Main Bibliography:
- Eck, D. (2020). Introduction to Programming Using Java (8th Edition). Available in math.hws.edu/javanotes/
- Eckel, B. (2006). Thinking in Java (4th Edition). Prentice Hall. (Cota: 1A-1-448 (ISEC) – 14372).
- Deitel, P.,Deitel, H. (2007). Java How to Program (7th Edition). Prentice Hall. (Cota: 1A-1-146 (ISEC) – 14445).
- Gamma, E., Helm, R., Johnson, R., Vlissides, J. (1995). Design Patterns: Elements of Reusable Object Oriented Software. Addison-Wesley. (Cota: 1A-7-97 (ISEC) – 15112).
- Freeman, E., Freeman, E. (2004). Head First Design Patterns. O’Reilly Media. (Cota: 1A-7-75 (ISEC) – 14706).
- Grand, M.(1998). Patterns in Java Volume 1 : a catalog of reusable design patterns illustrated with UML. John Wiley. (Cota: 1A-1-305 (ISEC) V.1o v. – 09760).
- Complementary Bibliography:
- Savitch, W.(2018). Java: An Introduction to Problem Solving and Programming (8th Edition). Pearson.
- Horstmann C., Cornell, G. (2015). Core Java, Volume I – Fundamentals (11th Edition). Prentice-Hall.