Jim Fawcett CSE687 – Object Oriented Design Spring 2015

Slides:



Advertisements
Similar presentations
Using.NET Platform Note: Most of the material of these slides have been taken & extended from Nakov’s excellent overview for.NET framework, MSDN and wikipedia.
Advertisements

SSCLI: The Microsoft Shared Source CLI Implementation Mark Lewin Microsoft Research
Why COM and.Net? Jim Fawcett CSE775 – Distributed Objects Spring 2005.
C++/CLR Jim Fawcett CSE687 – Object Oriented Design Spring 2009.
Creating and Running Your First C# Program Svetlin Nakov Telerik Corporation
Lecture 1: Overview of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++ Designed.
A Free sample background from © 2001 By Default!Slide 1.NET Overview BY: Pinkesh Desai.
CSC300 Visual Programming Dr. Craig Reinhart. Objectives Teach the basics of C++ –You won’t be an expert but hopefully a very good novice –GUI development.
11 Getting Started with C# Chapter Objectives You will be able to: 1. Say in general terms how C# differs from C. 2. Create, compile, and run a.
Creating and Running Your First C# Program Svetlin Nakov Telerik Corporation
Bacon A Penetration and Auditing Framework Hernan Gips
MESDA Conference 2002 MESDA Annual Conference 2002 Software Development Track Java vs. C#
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
Introduction and Features of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
Introduction to Object Oriented Programming CMSC 331.
.Net – The First Glance What Is.Net, Why Use.Net.
ISYS 350 Business Application Development David Chao.
Modern Programming Language. Web Container & Web Applications Web applications are server side applications The most essential requirement.
Jim Fawcett CSE687 – Object Oriented Design Spring 2001
Jim Fawcett CSE 691 – Software Modeling and Analysis Fall 2000
Review of Last Year’s Midterm
Jim Fawcett CSE687 – Object Oriented Design Spring 2015
Windows Programming Environments
Facade Pattern Jim Fawcett CSE776 – Design Patterns Summer 2010
CSE687 - Object Oriented Design class notes Survey of the C++ Programming Language Jim Fawcett Spring 2005.
The language focusses on ease of use
Jim Fawcett CSE775 – Distributed Objects Spring 2017
Abstract Factory Pattern
Programming Languages Dan Grossman 2013
Jim Fawcett CSE687 – Object Oriented Design Spring 2016
An Introduction to the Shared Source Common Language Infrastructure (SSCLI) Damien Watkins Copyright Watkins 2002.
Jim Fawcett CSE687 – Object Oriented Design Spring 2003
Jim Fawcett CSE775 – Distributed Objects Spring 2009
CSE687 – Object Oriented Design
Jim Fawcett CSE687 – Object Oriented Design Spring 2015
Cross Platform Development using Software Matrix
CSE687 - Object Oriented Design class notes Survey of the C++ Programming Language Jim Fawcett Spring 2004.
Jim Fawcett CSE687 – Object Oriented Design Spring 2005
Pluggable code Repository
.Net A brief introduction to
Introduction to .NET Framework Ch2 – Deitel’s Book
Did your feature got in, out or planned?
Out-of-Process Components
CE-105 Spring 2007 Engr. Faisal ur Rehman
Jim Fawcett CSE687-OnLine – Object Oriented Design Summer 2017
Jim Fawcett CSE775 – Distributed Objects Spring 2012
Jim Fawcett CSE775 – Distributed Objects Spring 2003
Jim Fawcett CSE687 – Object Oriented Design Spring 2016
Facade Pattern Jim Fawcett CSE776 – Design Patterns Summer 2010
PHP / MySQL Introduction
Abstract Factory Pattern
Intent (Thanks to Jim Fawcett for the slides)
CS360 Windows Programming
Jim Fawcett CSE687 – Object Oriented Design Spring 2009
Advanced Programming Fall 2017.
Ada – 1983 History’s largest design effort
OO-Design in PHENIX PHENIX, a BIG Collaboration A Liberal Data Model
Developing and testing enterprise Java applications
Out-of-Process Components
Paul Stubbs MCSD, MCSE 4.0, MCP+I, MCT, MCAD .Net
CSE 153 Design of Operating Systems Winter 2019
Jim Fawcett CSE687 – Object Oriented Design Spring 2003
Chapter 8 - Design Strategies
Automation and IDispatch
Message Passing Systems Version 2
CSE687 – Object Oriented Design
Jim Fawcett CSE681 – Software Modeling and Analysis Fall 2006
Jim Fawcett CSE687 – Object Oriented Design Spring 2015
Message Passing Systems
Presentation transcript:

Jim Fawcett CSE687 – Object Oriented Design Spring 2015 Why C++? Why not C#? Jim Fawcett CSE687 – Object Oriented Design Spring 2015

Both are Important C++ has a huge installed base. Your next employer is very likely to be a C++ house. C# is gaining popularity very quickly. But, your next employer may not yet do C#. CSE681 – Software Modeling and Analysis Focuses almost exclusively on C# and .Net. CSE687 – Object Oriented Design: Focuses almost exclusively on C++ and the Standard Library.

Comparison of Object Models C++ Object Model All objects share a rich memory model: Static, stack, and heap Rich object life-time model: Static objects live for the duration of the program. Objects on stack live within a scope defined by { and }. Objects on heap live at the designer’s discretion. Semantics based on deep copy model. That’s the good news. That’s the bad news. For compilation, a source file must include information about all the types it uses. That’s definitely bad news. But it has a work-around, e.g., design to interface not implementation. Use object factories. .Net Object Model More Spartan memory model: Value types are stack-based only. Reference types (all user defined types and library types) live on the heap. Non-deterministic life-time model: All reference types are garbage collected. That’s the good news. That’s the bad news. Semantics based on a shallow reference model. For compilation, a source file is type checked with metadata provided by the types it uses. That is great news. It is this property that makes .Net components so simple.

Language Comparison Standard C++ .Net C# Is an ANSI and ISO standard. Has a standard library. Universally available: Windows, UNIX, MAC Well known: Large developer base. Lots of books and articles. Programming models supported: Objects Procedural Generic Separation of Interface from Implementation: Syntactically excellent Implementation is separate from class declaration. Semantically poor See object model comparison. .Net C# Is an ECMA standard, becoming an ISO standard. Has defined an ECMA library. Mono project porting to UNIX New, but gaining a lot of popularity Developer base growing quickly. Lots of books and articles. Programming models supported: objects. Separation of Interface from Implementation: Syntactically poor Implementation forced in class declaration. Semantically excellent See object model comparison.

Library Comparison Standard C++ .Net Framework Class Library Portable across most platforms with good standards conformance I/O support is stream-based console, files, and, strings Flexible container facility using Standard Template Library (STL) But no hash-table containers No support for paths and directories Strings, no regular expressions No support for threads No support for inter-process and distributed processing No support for XML Platform agnostic .Net Framework Class Library Windows only but porting efforts underway I/O support is function-based console and files Fixed set of containers that are not very type safe. Has hash-table containers Strong support for paths and directories Strings and regular expressions Thread support Rich set of inter-process and distributed processing constructs Support for XML processing Deep support for Windows but very dependent on windows services like COM

Comparison of Library Functionality .Net Framework Libraries Standard C++ Library Extendable I/O Weak Strong strings Composable Containers Moderately good Paths and Directories No Threads Good Sockets XML Forms Reflection

Comparison of Library Functionality Support Provided in Code from Website Support Provided by you in Projects Extendable I/O - strings Composable Containers HashTable No Paths and Directories FileInfo class, Path, and Directory classes File Managers Threads Thread class You will use std::thread Sockets Basic Demos, Socket class Socket channels XML Reader, Writer, no DOM XMLDOM in Project #2 Forms Reflection Demo on Server

End of Comparison