|Αντικειμενοστραφής Προγραμματισμός ΙΙ|
|Title: ||Αντικειμενοστραφής Προγραμματισμός ΙΙ|
|Lesson Code: ||321-3652|
|Theory Hours: ||3|
|Lab Hours: ||2|
|Faculty: ||Kambourakis Georgios|
Introduction to OOP and UML. Java Language Fundamentals: Data types, Variable declarations, Operators and Assignment, Control structures, Strings, Arrays, Collections, Wrapper classes. Java as an OOP language: Classes, Constructors, Access modifiers, Packages, Interfaces, Garbage collection, Encapsulation, Cohesion, Coupling. Exception Handling: Basics, Exception Hierarchy, The Throwable class, Unchecked and checked exceptions, Exception and Inheritance, User defined Exceptions, Redirecting and Re-throwing Exceptions, Introduction to Concurrent programming and Multithreading: Introduction, Thread Creation, Thread Life cycle, priorities and scheduling, Synchronization, Communication of Threads. Files and I/O Streams: File Input stream and File output stream, Serialization. AWT: Basics, The Graphics class, Class hierarchy of AWT, Layout Managers, Java 2D API. Swings: Introduction, Swing packages, Hierarchy of swing classes, Advanced layout Managers. Networking with Java: Introduction, Stream Socket Connections.
This course covers the fundamentals of Object Oriented Programming (OOP) using Java. The main learning objectives for this course are: To build and develop OOP thinking: Learn to think in objects; to familiarize students with the basic features of the language API and knowing how to use them correctly and efficiently; to cover the usage principles of encapsulation, coupling, cohesion, inheritance, polymorphism and method overloading/overriding; to create applications using sound OOP practices and program structuring; to develop analytical programming thinking and reasoning skills. The aforementioned objectives are achieved through course lectures and extensive laboratory exercises.
321-1204 Structured programming
321-2104 Object-oriented programming I
Liang D. Y., Java, 10th ed.
Deitel Harvey M., Deitel Paul J., Java Programming, 10th ed.
Cadenhead R, and Lemay L., Java 7, 6th ed.
Kavouras, Ι. Κ., Roukounaki, Java Programming, Klidarithmos Pubs., (in Greek).
Horton, I., Beginning Java 2.
Horstmann, K. Big Java, Wiley.
Horstmann, C. S., Cornell, G., Core Java, Prentice Hall.
Eckel, B., Thinking in Java, Prentice Hall, 2nd Edition.
Naughton, P., Java Handbook, Osborne.
Kathy Sierra and Bert Bates, SCJP Sun Certified Programmer for Java.
Cay S. Horstmann, Java 8 for the Really Impatient.
Brian Goetz and Tim Peierls, Java Concurrency in Practice.
Kathy Sierra and Bert Bates, Head First Java, 2nd Edition.
Joshua Bloch, Effective Java, 2nd Edition.
Craig Walls, Spring in Action, 4th edition.
Christian Bauer and Gavin King, Java Persistence with Hibernate.
Bear Bibeault and Yehuda Katz, jQuery in Action.
Eric Freeman and Bert Bates, Head First Design Patterns.
Erich Gamma and Richard Helm, Design Patterns: Elements of Reusable Object-Oriented Software.
Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship.
Robert Sedgewick and Kevin Wayne, Algorithms, 4th Edition.
Narasimha Karumanchi, Data Structures and algorithms Made Easy in Java, 2nd edition.
Jon Bentley, Programming Pearls, 2nd Edition.
Yegor Bugayenko, Elegant Objects (Vol. 1).
|Learning Activities and Teaching Methods |
Lab exam, Final exam, multiple choice, short-answer questions, problem solving.
|Assessment/Grading Methods |
Lectures, Laboratory, Lab. exercises, Study.
|Language of Instruction|
|Greek, English (for Erasmus students)|
|Μode of delivery |