Description |
C# Overview
Read this
paper first, and answer the following questions:
- Explain features which make C# a better solution than Java for
writing performance-intensive software. Explain the work-arounds in
Java for those features.
- 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.
- (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:
- What are the design considerations for declaring a class as
implementing
Serializable ,
Externalizable , or none of them? Give an example
for each case.
- 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?
- 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:
- 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.
-
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
- 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
|