Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
31 views

Object Oriented Software Engineering Based On A Presentation by Murat Can Ganiz

The document provides an overview of Microsoft .NET and compares it to Java 2 Enterprise Edition (J2EE). It discusses .NET's evolution from COM and its core components like the Common Language Runtime (CLR) and Framework Class Library (FCL). It also introduces the C# programming language, describing how it combines features from C++, Java and Visual Basic for developer productivity. The document then contrasts some key aspects of .NET and J2EE like their runtime environments and how J2EE is a specification while .NET is a Microsoft product.

Uploaded by

Murat Can Ganiz
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views

Object Oriented Software Engineering Based On A Presentation by Murat Can Ganiz

The document provides an overview of Microsoft .NET and compares it to Java 2 Enterprise Edition (J2EE). It discusses .NET's evolution from COM and its core components like the Common Language Runtime (CLR) and Framework Class Library (FCL). It also introduces the C# programming language, describing how it combines features from C++, Java and Visual Basic for developer productivity. The document then contrasts some key aspects of .NET and J2EE like their runtime environments and how J2EE is a specification while .NET is a Microsoft product.

Uploaded by

Murat Can Ganiz
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 35

Microsoft .

NET

Object Oriented Software Engineering

Based on a presentation
by Murat Can Ganiz
Agenda

 .NET

 C#

 .NET vs. J2EE (C# vs. Java)

 Any .NET or C# programmers here?

2
Definition…
 “Microsoft .NET is a set of Microsoft software
technologies for connecting information, people,
systems and devices.”

 Microsoft’s explanation of .NET:


http://www.microsoft.com/net/basics/whatis.asp
 More of an emphasis on web services (self-describing self
modules wrapped in Internet protocols (XML and SOAP)

 In real terms to the developer:


 A new platform for building applications that run in stand-alone
mode or over the Internet

3
Evolution
 Next Generation of COM:
 Component oriented software:

 Win32/C-style APIs are outdated


 COM was step in right direction, but painful to program with
 COM was restricted to VB, C++
 Binary compatibility/portability an issue: x86 version of COM component
needed to be compiled for e.g. PowerPC
 Memory management also a pain
 Common Object Runtime:
 An execution environment for components written in any language:

 Eventually became .NET with incorporation of Web Services


 Standardised API
 Web Services:
 Interoperability is key in the connected world:

 Require open standards for interoperability and leveraging legacy code

4
Architecture

5
.NET Core Components

• FCL is Framework Class Library, comparable to JDK’s library

6
Java and .NET: Runtime environments
 Java
 Intermediate language is bytecode
 Original design targeted interpretation
 Java VMs with JIT compilation are now also used
 .NET Framework
 Intermediate language is MSIL
 Provides JIT compilation
 What is JIT?
 Just-In-Time compilation: translates a bytecode method
into a native method on the fly, so as to remove
the overhead of interpretation

7
Common Language Runtime
 CLR sits on top of OS to provide a virtual environment
for hosting managed applications
 What is CLR similar to in Java?
 Java Virtual Machine (JVM)
 CLR loads modules containing executable and
executes their code
 Code might be managed or unmanaged
 In either case the CLR determines what to do with it
 Managed Code consists of instructions written in a
pseudo-machine language called common
intermediate language, or IL.
 IL instructions are just-in-time (JIT) compiled into
native machine code at run time

8
Compiling and executing managed code

Compilation Microsoft
Source Language Intermediate
Code Compiler Language
(MSIL)

The first time each


method is called

Native JIT
Code Compiler

Execution
9
Common Language Runtime

10
C#
.NET languages

 Over 20 .NET-compatible languages


 Most are provided by 3rd parties

 .NET languages provided by Microsoft


 C++
 Visual Basic
 C#

12
Language Compiler List
 Ada  lcc
 APL (MS Research Redmond)
 Basic (Visual Basic)  Mondrian (Utrecht)
 C#  ML
(MS Research Cambridge)
 C
 Mercury
 C++
(Melbourne U.)
 Java  Oberon
 COBOL (Zurich University)
 Component Pascal  Oz (Univ of Saarlandes)
(Queensland U Tech)  Perl
 ECMAScript (JScript)  Python
 Eiffel (Monash U.)  Scheme (Northwestern U.)
 Haskell (Utrecht U.)  SmallTalk

13
Why C# ?
 Unofficially: because Sun owns Java
 Important features are spread out over multiple
languages
 Example: do you think developers should have to choose
between pointers (C++) or garbage collection (Java)?
 Old languages + new features = poor syntax
 Garbage collection in C++?
 Event-driven GUIs in Java?
 Increase developer productivity!
 Type safety
 Garbage collection
 Exceptions

14
The safety of Java

 100% object oriented


 Automatic garbage collection
 Array bounds checking at runtime
 Strict type checking
 Structured exception handling

15
The ease of Visual Basic
 First class support for properties

 First class support for events

 foreach loops

16
The power of C++
 Enumerations
 Operator overloading
 Mathematical, Indexing, and Casting
 Function pointers
 Called “delegates”
 Type safe
 Structs

17
The power of C++
 Option to pass parameters by reference
or by value

 Can disable type-safety, garbage


collection, and bounds checking

 Can directly manipulate memory with


pointers

18
“foreach” loops
 Iterates over arrays or any class that
implements the IEnumerable interface

Int32[] myArray = new Int32[]{10, 20, 30, 40};

foreach(Int32 i in myArray){
Console.WriteLine(i);
}

 Does this feature look familiar?


 JDK 5.0 imitates, though with different syntax

19
Automatic “boxing”
 Automatically converts primitive values to
objects as needed
Stack s = new Stack();
s.push( new Integer( 42 ) );
...
int x = ((Integer)s.pop()).intValue();

Stack s = new Stack();


s.push( 42 );
...
int x = (int)s.pop();

20
Inheritance and interfaces

 C++ syntax
 Simply use a colon and separate by commas
 Can inherit from one base class
 Can implement any number of interfaces

class ArrayList : Collection, IEnumerable


{

}
21
Fruit example: class Fruit & constructor
using System;
namespace FruitProject1
{ public abstract class Fruit
{ protected string color;
protected double size;
protected Point center;
/// <summary>
/// Constructor with parameters
/// </summary>
/// <param name="color"></param>
/// <param name="size"></param>
/// <param name="center"></param>
protected Fruit(string color,double size,Point center)
{ MyException ex = new MyException();
if (validColor(color)) this.color = color;
else { ex.whatError = "Invalid color"; throw ex; }
if (validSize(size)) this.size = size;
else { ex.whatError = "Invalid size"; throw ex; }
this.center = center;
}
22
Fruit example: a few Fruit methods
public void changeSize(double size)
{ MyException ex = new MyException();
if (validSize(size)) this.size = size;
else { ex.whatError = "Invalid size"; throw ex; }
}

public double getSize()


{ return size; }

public abstract bool validSize(double size);


public abstract bool validColor(string color);
public abstract void print();

/// <summary>
/// For identifying object types
/// </summary>
/// <returns>Type of the object</returns>
public override string ToString() //Is the keyword a good idea?
{ return "Fruit"; }
23
A couple of methods from class
Apple
public override bool validSize(double size)
{ if ((size>500) || (size<10)) return false;
else return true;
}

public override void print()


{ // Automatically invoke ToString methods of object parts
Console.WriteLine("Type:" + this + "- size:" + this.size +
"- color:" + this.color + "- center" + this.center);
}

24
Snippets from class Bowl
using System;
using System.Collections;
namespace FruitProject1
{ /// <summary>
/// class Bowl models a bowl of fruit
/// </summary>
public class Bowl
{ private int capacity;
private ArrayList fruitList = new ArrayList();
public Bowl(int capacity)
{ this.capacity = capacity; }
public int getCapacity() { return capacity; }
public int getNumberofFruits() { return fruitList.Count; }
public bool addFruit(Fruit f)
{ if (fruitList.Count<capacity) fruitList.Add(f);
else return false;
return true;
}
//More methods…
} 25
.NET vs. J2EE
Basic Truths
 J2EE
 Java-centric and platform-neutral
 J2EE is not a product you buy from Sun.
 J2EE is a set of specifications which indicate how
various J2EE functions must interoperate
 If I don’t buy J2EE from Sun, how does Sun make money?
 J2EE 1.4 released with features to completely
support web services – JAX-RPC 1.1 API, J2EE
Management 1.0 API, web service endpoints etc.
(Hard to learn, hard to implement!)

27
Basic Truths

 .NET
 Windows-centric and language-neutral
 .NET is a Microsoft product strategy that includes a
range of products from development tools and
servers to end-user applications.
 Platform-neutral version of .NET is available
Mono –Novell-sponsored, open source
implementation of the .NET development
environment
( http://www.go-mono.com )

28
Typical N-tier application
architecture

29
.NET and Java: application platforms
 .NET
 The .NET Framework
 Java
 Java application servers
 Products include:
 IBM WebSphere Application Server
 BEA WebLogic Application Server
 Sun iPlanet Application Server
 Oracle Application Server
 Many others

30
.NET vs. Java: standard libraries

 .NET Framework class library


 Defined by Microsoft
 Somewhat Windows-oriented
 Organized into a hierarchy of namespaces
 J2SE, J2EE
 Defined by Sun and the Java Community Process
 Not bound to any operating system
 Defined as packages and interfaces

31
Class Libraries

32
.NET Class Library
 IO
 GUI Programming
 System Information
 Collections
 Components
 Application Configuration
 Connecting to Databases (ADO.NET)
 Tracing and Logging
 Manipulating Images/Graphics

33
Class Library
 Interoperability with COM
 Globalization and Internationalization
 Network Programming with Sockets
 Remoting
 Serialization
 XML
 Security and Cryptography
 Threading
 Web Services

34
Thanks…
This presentation available at:
www.cse.lehigh.edu/~glennb/oose/Csharp_dotNET.ppt

Questions?

murat@lehigh.edu (Murat Ganiz)

You might also like