Object Oriented Design Course


Exercise 4 - Theoretical Issues

C#, Object serialization, Weak references and Components

Deadline May 18th, 2005 at Ross closing time
Description


C# Overview

Read this paper first, and answer the following questions:
  1. Explain features which make C# a better solution than Java for writing performance-intensive software. Explain the work-arounds in Java for those features.
  2. For each of the following sections in the paper: polymorphism, interfaces, versioning, enums - give an example of a possible mistake a programmer can make in Java, but can’t make in C# thanks to the way that feature was designed there.
  3. (10 Points Bonus Question) Some of the features that C# has and Java doesn’t, have been added to Java in JDK 1.5 (currently in beta version). Some other features that Java has and C# didn’t, have been added to C# in Visual Studio.NET 2005. What are these features for each language? See: http://java.sun.com/developer/technicalArticles/releases/j2se15/ and http://msdn.microsoft.com/vcsharp/default.aspx?pull=/msdnmag/issues/04/05/c20/default.aspx

Object Serialization

Read this paper and this one, and answer the following questions:
  1. What are the design considerations for declaring a class as implementing Serializable, Externalizable, or none of them? Give an example for each case.
  2. Is object serialization "shallow" - copies only the value fields of a given object - or "deep" - copies references objects recursively as well? How would you write a class that serializes and de-serializes itself using the behavior that is not the default one?
  3. Compare the Java object serialztion and with the c# one, as described in these articles. In your answer adress the issues of ease of use, efficiency (or overhead) and customization of the serialization.
The Java Serialization Specification is also recommended reading, although not required for this exercise. In particular, it covers the subjects of versioning, the stream protocol and security in more detail. It's shorter and easier to read than most formal specifications, so give it a try :-)

Weak References

Read this paper first, as well as the References API, and answer the following question:
  1. Offer a practical use for each of the three kinds of weak references. In each example, explain why the same outcome could not have been reached by using the other kinds of references or by a strong reference.

Components

The fastest way to build applications is not by writing them from scratch, but instead by assembling existing components (read a short definition here). The following two questions request you to find on the web components for two major platforms - Delphi and .NET. For each of the eight tasks below, find a component for only one of these two platforms (of your choice, can be mixed), and list in your answer the name of the component, the URL where it can be downloaded or purchased, its cost, and why you chose it over its competitors (extra features, better price, etc.). You can search anywhere on the web, but good places to start are ComponentSource, DelphiSource and Torry's Delphi Pages.

  1. Visual components that can display:
    - Main menu and toolbars in Office-XP look and feel, with customization support
    - Grid (table) that supports font and color settings per cell, images and hyperlinks in cells
    - Text editor that supports fonts, tables, images, as well as print and print preview features
    - Charting component that can display at least ten types of graphs/charts

  2. Non-visual components that can:
    - Send SMS messages (for a single network or phone type is enough)
    - Create PDF documents
    - Compress and uncompress files using the ZIP file format
    - Spell-check text in English

 

Submission Submit a zip file contains the document with your answers. The document should be called ex4.<txt|html|ps|pdf> only.
Resources