1 / 24

Programming Design Patterns

Programming Design Patterns. Madhu Govindaraju mgovinda@binghamton.edu. Course mechanics. Time and Place: Office Hours: TR, 2.50 PM – 4.20 PM, Office P-15, Engineering Bldg Teaching Assistant: Bedri Sendir Office Hours: TBA Meet me during office hours or by appointment

dolan-poole
Download Presentation

Programming Design Patterns

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programming Design Patterns Madhu Govindaraju mgovinda@binghamton.edu Programming Design Patterns

  2. Course mechanics • Time and Place: • Office Hours: TR, 2.50 PM – 4.20 PM, Office P-15, Engineering Bldg • Teaching Assistant: Bedri Sendir • Office Hours: TBA • Meet me during office hours or by appointment • Course Web page: http://www.cs.binghamton.edu/~mgovinda/courses/csx42/ • Class presentations will be available for download • Link will be posted on blackboard • Discussion and participation • Class mailing list: csx42@cs.binghamton.edu • Announcements: on mailing list and/or class web page Programming Design Patterns

  3. In class expectations • Cell phones should be turned to silent or vibrate mode during class • No Laptops can be used during class • take notes in the old-fashioned way • Exams, quizzes, assignments should use the design patterns the way it was discussed in class • even if the book has a different signature for the pattern • Slides will NOT be provided before the lecture • Take notes in class Programming Design Patterns

  4. Course prerequisites • An interest in thorough understanding of design patterns • programming (large) projects • Proficiency in Java (and C++). • Or willingness to pick up during the course Programming Design Patterns

  5. Grading • 70%: 2 Exams and Quizzes • 3%: Class and listserv participation • 27%: Programming Assignments, Projects, and Homeworks • All projects/labs do NOT carry the same weight Data Structures and Algorithms

  6. Course Book • Head First Design Patterns • Authors: Eric Freeman & Elisabeth Freeman with • Kathy Sierra & Bert Bates • Publisher: O’Reilly Programming Design Patterns

  7. Assignments, projects and exams • Many programming assignments • Some written assignments • Project discussions in class • participation is a requirement (will be graded) • Final Grade: exams, assignments, class participation • Several surprise/Pop Quizes • Grading will be on-the-curve • Moss: An automated tool for comparing code will be used. Programming Design Patterns

  8. Outline • This course is intended to help you write real object-oriented code • Real object-oriented code should be reasonably easy to understand and be easy to modify and extend Programming Design Patterns

  9. Access Level Modifiers • Fill the empty cells with Yes/NO Programming Design Patterns

  10. Access Level Modifiers • Fill the empty cells with Yes/NO Programming Design Patterns

  11. Simple Java Programming Assignment • Write Java code to swap two strings • Do not attempt to access the internals of the string class • Did you accept the two strings from the command line? • Did you perform an error-check when you read the two strings from the command line? • Did you throw/catch exceptions? • Did you actuallytest the program against the requirements? Programming Design Patterns

  12. For interviews … • Good design, including style guidelines • Code should be robust, amenable to testing, high performance, take care of corner/boundary • Suggestion: work on old ACM programming contest problems Programming Design Patterns

  13. Reuse • Reuse has been the cornerstone of the promotion of object-oriented programming. • Reuse is supported by object-oriented programming languages but it does not come from class libraries • Libraries DO NOT support extensibility--the easy addition of new features in new classes. • Why? Programming Design Patterns

  14. Example Patterns • Singleton Pattern • Observer Pattern • Simple Factory Pattern Programming Design Patterns

  15. Abstract class vs Interface • What is the difference between an Abstract Class and a Java Interface? Programming Design Patterns

  16. Abstract class vs Interface • An interface is used to define a set of methods that a class can choose to implement • An abstract class is similar but can include(i) data fields that can then be shared by subclasses(ii) implementations of some methods that serve as default behavior when not overridden in a subclass Programming Design Patterns

  17. Some Object Oriented Concepts • What is the difference between Exception handling in C++/Java and error handling in C? • When should the “finally” clause be used in Java? • When should a class or method be defined as “final”? • Why is Java reflection useful? Does C++ have reflection capabilities? • Should constructors always be public? • What kind of support does Java/C++ have for multi-threaded programming? Programming Design Patterns

  18. Some Object Oriented Concepts (2) • How can a method be declared virtual in Java? C++? • What is polymorphism? • What does “Abstraction” mean? • Why is the run-time type of a reference important in method-invocation? • When is the keyword “volatile” used in Java? Programming Design Patterns

  19. Example Design Principle • Identify the aspects of your application that vary and separate them from what stays the same • how can this be done in programming terms? • Program to an interface, not an implementation. Programming Design Patterns

  20. Information Hiding • Information Hiding • language feature of capability that allows certain aspects of the software from being inaccessible to the users of the software (clients) • one way to achieve this is to provide an interface, which does not change • though the underlying implementation can change, but this does not affect the users who rely just on the interface • hides design decisions that are likely to change Programming Design Patterns

  21. Encapsulation • Encapsulation • way of organizing data and methods into a structure and concealing the way it is implemented • provides the ability to validate/process the values in a method before they are applied to the data of the object • preserves integrity of the data • encapsulation defines access levels: public, protected, private • data does NOT have to be hidden • difference from Information Hiding Programming Design Patterns

  22. Homework-1 • Write Java code in your notebook showing how Inner Classes work • Java Inner class • How many class files are generated • What is the name of the class file generated for the inner class • Java anonymous Inner class • Argument defined anonymous inner class • How can Inner class be accessed? • Can Inner classes have static members? • Can Inner classes have static methods? Programming Design Patterns

  23. Homework-1 • When should inner classes be used in Java? • technical reason • an example • How can Inner class be accessed? • Can Inner classes have static members? • Can Inner classes have static methods? • What is the exact compilation error you get when you try to access non-static instance variables from a static nested class Programming Design Patterns

  24. Homework-1 • Write is the difference between inner and nested class? • Can Nested classes be static? • Java Inner class • How many class files are generated • What is the name of the class file generated for the inner class • Java anonymous Inner class • Argument defined anonymous inner class Programming Design Patterns

More Related