computer programming lecture 11 - movement...

51
Computer Programming Lecture 11 이윤진 Lecture 11 이윤진 서울대학교 2007 1 24 2007.1.24.

Upload: trannga

Post on 30-Aug-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Computer ProgrammingLecture 11

이윤진

Lecture 11

이윤진서울대학교

2007 1 242007.1.24.

Page 2: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Slide Credits엄현상교수님엄현상교수님서울대학교컴퓨터공학부Computer Programming, 2007 봄학기p g g, 학기

Page 3: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Object-Oriented Programming (2)

Page 4: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

순서순서JavaJava

Q&A

Page 5: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

개Java 개요Object-Oriented Programming Language (OOPL) by Sun in Object Oriented Programming Language (OOPL) by Sun in 1991

Programming with One or More ClassesSi l St tSimple Structure

w/o header files, preprocessor, struct, operator overloading, multiple Inheritance, pointers, etc.

Garbage CollectionGarbage CollectionNo need to delete or return any storage

Dynamic LoadingCl b i l d d d dClasses being loaded as needed

Platform IndependenceJava Virtual Machine (JVM)

MultithreadingSupport for multiple threads of execution

Page 6: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Some Differences with C/C++Automatic Memory ManagementAutomatic Memory Management

Garbage CollectorNo Dangling Pointers or Memory Leaksg g y

No Pointer HandlingNo Explicit Reference/Dereference Operations

No MakefilesNo Header Files

cf, imported Packages

No Function Declaration (Similar to C)No Default Function Argument

Page 7: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Java PlatformS/W Platform for Running JavaS/W Platform for Running Java- on Top of any Platforms

Java Virtual Machine (JVM)Java Virtual Machine (JVM)Java Application Programming Interface (Java API)

Java Program

Collection of ready-made software componentsJava Program

Java Virtual Machine

Java APIJava Platform

- grouped into Packages of classes and interfaces)

Underlying Platform

Page 8: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Java InterpreterImplementation of the JVMImplementation of the JVM

Executing Java BytecodesJava bytecodes can be considered as intermediate code instructions for Java bytecodes can be considered as intermediate code instructions for the JVM

Java programs, once compiled into bytecodes, can be run on any JVM

Page 9: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

How a Java Program RunsCompilation and InterpretationCompilation and Interpretation

Compiler First Translates a Java Program into Java Bytecodes OnceOnce

Interpreter Parses and Runs Each Java Bytecode Instruction Multiple times on different platforms

Java Source Code Java Bytecode Machine Code

Java Compiler Java Interpreter Computer

Java Source Code Java Bytecode Machine Code

javac Java Virtual Machine (JVM)

Page 10: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Java ProgramSaved in Files Each of Which Has the Same Name as the Saved in Files, Each of Which Has the Same Name as the public Class

Containing Only One public ClassContaining Only One public ClassContaining Other Non-public Classes

public class HelloWorld {public static void main(String args[]) {

This code must be saved in HelloWorld.java

System.out.println(“Hello, World”);}

}

$ javac HelloWorld.java$ java HelloWorld

compile (create HelloWorld.class; bytecode)

h JVM d h i h d$ jHello, World

start the JVM and run the main method

Page 11: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Memory Layout of a Java Program

Bytecode of MethodVariables in Class

Method Area public class MemoryModelTest {static int x=0;

Parameter VariableLocal Variable

Class Object

Stackstatic int x 0;public static void main(String args[]) {

int a=10, b=20, c;c = add(a b);

Array ObjectString Object

Heapc = add(a, b);

}static int add(int a, int b) {

return(a + b);return(a + b);}

}Space for objects

Sample Program: MemoryModelTest.java

created by new operator

Page 12: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

ClassUnit of ProgrammingUnit of Programming

Java Program: a Collection of ClassesSource code in .java filesSource code in .java files

Description (Blueprint) of Objects (Instances)Common CharacteristicsCommon Characteristics

Instances Have These CharacteristicsAttributes (Data Fields) for Each ObjectAttributes (Data Fields) for Each ObjectMethods (Operations) That Work on the Objects

Page 13: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Member Access ControlWay to Control Access to a Class’Members from Other Way to Control Access to a Class Members from Other Classesprivatep

Accessible only in the class itself

Default (package or friendly)A ibl i th k b l f th l i th l f Accessible in the same-package subclasses of the class or in the classes of the same package

protectedAccessible in the subclasses of the class or in the classes of the same package

publicpublicAccessible everywhere

Page 14: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

ObjectInstance of a ClassInstance of a ClassUniquely Identifiable Entity

w/ Its State, Behavior, and InterfaceS , ,Maintaining Data Values in Its AttributesReferenced by a Reference Variable (of Reference Type)

Inheriting from the Class Objectw/ a number of methodstoString() equals() & clone()toString(), equals(), … &, clone()

Page 15: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Managing ObjectsReferencing Objects of Specified TypesReferencing Objects of Specified Types

Objects Created by the new Operator

Creating Objects by Executing the Constructorsg j y gConstructor (Function) Overloading

Stringgreeting

String greeting = new String(″hello″);

D l ti Obj t i G b C ll ti

g

value = “hello”

g g

Deleting Objects via Garbage CollectionReference Count for Each Object

Cleanup occurs at the convenience of the Java runtime environment

Page 16: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Java Example: AbstractionOnline Retailer Such as Amazon ComOnline Retailer Such as Amazon.Com

Item: Type, Title, Maker, Price, Availability, etc.

class Item { // Class definition Attribute of the classclass Item { // Class definitionpublic String title; // String is a predefined classpublic double price; // double is a primitive data typepublic double SalePrice(){ return (price * 0.9);}

}M th d f th l

Item A = new Item(); // Class object definition and creation

Method of the class

Variable of reference type

// OKAY : A.title, A.price, and A.SalePrice()Variable of reference type

Page 17: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Java Example: EncapsulationOnline Retailer Example Cont’dOnline Retailer Example Cont d

class Item {class Item {public String title;public double price;private int inStockQuantity;

inStockQuantity attribute is not accessible outside of the Item class

public double SalePrice(){ return (price * 0.9);}public boolean isAvailable(){

if(inStockQuantity > 0) return true;else return false;else return false;

}}

I A I () // Cl bj d fi i i d iItem A = new Item(); // Class object definition and creation

// NOT OKAY: A.inStockQuantity// OKAY: A.isAvailable()// OKAY: A.isAvailable()

Page 18: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Java Example: InheritanceOnline Retailer Example Cont’dOnline Retailer Example Cont d

class MusicCDItem extends Item {public String singer_name;

}

Item

}

// Class object definition and creationM sicCDItem B ne M sicCDItem

MusicCDItemMusicCDItem B = new MusicCDItem;

// OKAY: B.singer_name, B.title, B.price, B.SalePrice(), // and B.isAvailable() // NOT OKAY: B.inStockQuantity

Page 19: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Java Example: PolymorphismOnline Retailer Example Cont’dOnline Retailer Example Cont d

class Item {public String title;public String title;public double price;private int inStockQuantity;public double SalePrice(){ return (price * 0 9);}public double SalePrice(){ return (price * 0.9);}public boolean isAvailable(){

if(inStockQuantity > 0) return true;else ret rn falseelse return false;

}public void specificInfo() {

System.out.println("no info: a base-class object");}

}

Page 20: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Java Example: Polymorphism Cont’d

Online Retailer Example Cont’dOnline Retailer Example Cont dclass MusicCDItem extends Item {

public String singer_name;public void specificInfo(){public void specificInfo(){

System.out.println("signer name=" + singer_name +" : a derived-class object");

}}

public class OnlineRetailer {static void printSpecificInfo(Item Item){item.specificInfo();}static void printSpecificInfo(Item Item){item.specificInfo();}public static void main(String args[]){ … }

}

Item A = new Item();Item A = new Item();MusicCDItem B = new MusicCDItem();

printSpecificInfo(A); // Call Item.specificInfo() printSpecificInfo(B); // Call MusicCDItem.specificInfo() // - Another derived class (e.g., MovieDVDItem) with specificInfo()

Page 21: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Static ModifierUse: Static Attributes & Static MethodsUse: Static Attributes & Static Methods

FeaturesAll Cl Sh S i M bAll Classes Share Static MembersIt Is Possible to Invoke Static Methods w/o InstantiationI St ti M th d It I All d t A N St ti D t In Static Methods, It Is Allowed to Access Non-Static Data or Non-Static Methods of Classes after the Instantiation of the ObjectsObjects

class A{private int i = 5;public static printI(){

System.out.println(i); // error!System.out.println(new A().i);

}}

Page 22: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’Static Modifier Cont’dDifferences between C++ and JavaDifferences between C++ and Java

Static Method InvocationC++ : Class::method();Java : Class.method();

Static Data Member InitializationC++ : No In Class Initialization (ANSI/ISO)C++ : No In-Class Initialization (ANSI/ISO)Java : In-Class Initialization

class A{public static int i = 10;

JAVAclass A{public:

C++p…

}

pstatic int i; // declare…

}}int A::i = 0; // define & initialize

Page 23: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Windows API

Page 24: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

순서순서Introduction to WindowsIntroduction to Windows

What is Windows API?

A li ti D l t E i tApplication Development Environments

Message Driven System

Other Backgrounds

Function WinMain

Function WndProc

API Example : Hello, World!p

Possible Topics for Final

Page 25: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Introduction to WindowsHistory of WindowsHistory of Windows

85.11 Windows 1.087.11 Windows 2.092.4 Windows 3.193.7 Windows NT 3.195.8 Windows 9596.8 Windows NT 4.098 6 Wi d 9898.6 Windows 9800.2 Windows 200002 9 Windows XP02.9 Windows XP07.1 Windows Vista

Page 26: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’Introduction to Windows Cont’dMeritsMerits

Being the Most Widely Used in Personal ComputingGUI : Graphic User InterfaceGUI : Graphic User InterfaceMultitaskingStandard User InterfaceStandard User Interface

User Adapts to New Program Quickly

DemeritsVery Commercial Product!

Not Open Source!

Page 27: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

[참고] X Windows: Standard Graphical Engine for Unix/Linux: Standard Graphical Engine for Unix/Linux

Difference with Microsoft WindowsPlatform IndependentNetwork Transparentp

X Protocolo Provide a client-server architecture at the application level

o Separate the processing and display for an application

- X Server : Low-level interface for controlling screen

X Client Processing part of the application- X Client : Processing part of the application

Page 28: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

What is Windows API?API (A li i P i I f )API (Application Programming Interface)

Possibly Making Windows System Calls

Application 1

Hardware 1

Windows API Application 2

Hardware 2

Windows Application 3

Page 29: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Application Development EnvironmentsWindows Software Development Kit (SDK) p ( ): Providing API Libraries, Documents, Tools, etc.

Using API Directlyh f G C lHigh Performance, Fine-Grain Control

Low Productivity

Class LibrariesWrapping APIs to Classes

Convenient and PowerfulE.g., MFC (Microsoft Foundation Class) for Visual C++g , ( )

Rapid Application Development (RAD) ToolsProviding Users–Don’t-Care Visual Tools

High Productivity but Low PerformanceHigh Productivity, but Low PerformanceE.g., Visual Basic, Delphi, Power Builder, etc.

Page 30: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Message Driven SystemContent of a MessageContent of a Message

Event InformationChange in the SystemChange in the System

Change between the User and System

(User) Action in a Window

Role of OS Regarding a MessageInspecting What Events Have Occurred, and Generating the Corresponding MessageEnqueuing the Message into a Message Queue Belonging to E h PEach Program

Page 31: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’Message Driven System Cont’dUse of a Message QueueUse of a Message Queue

Each Program Has a Message QueueFunction WndProc Processes a MessageFunction WndProc Processes a Message

message queue

detect generate

enqueue

an action

OSdetect generate

message

an action

Page 32: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’Message Driven System Cont’dUse of the Message LoopUse of the Message Loop

LocationEnd of Function WinMainEnd of Function WinMain

FunctionalityDequeuing from the Message Queue

Translating If Necessary

Delivering to the Event Handler

Page 33: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’Message Driven System Cont’dreturn false if getting a WM_QUIT message, else return true

int APIENTRY WinMain(…){

translate a keyboard input …while(GetMessage(&message, 0, 0, 0)){

TranslateMessage(&message);

translate a keyboard input messagee.g.,) WM_KEYDOWN

& WM KEYUPDispatchMessage(&message);

}

& WM_KEYUP→ WM_CHAR

…} deliver the message to function

WndProc that specifies what to dop

Page 34: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’Message Driven System Cont’dOS Application

message queuewhile(GetMessage(&message, 0, 0, 0)){

T l t M (& )

WinMain

essage queueTranslateMessage(&message);DispatchMessage(&message);

}}

switch(message){

WndProc

WM CHAR

case WM_CHAR:…

WM_CHAR

WM_PAINT

break;case …default: return DefWindowProc();default: return DefWindowProc();

}

Page 35: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Other BackgroundsHandlesHandles: Variables Distinguishable from Other Resources

32 bit Integer Type Value32 bit Integer Type ValueThose Made by OS, Not the Users

Similarly, “fd=open()” in Linuxy, p ()

Types : HWND, HPEN, HBRUSH, HDC, etc.Represent a Handle of Each Resource

Page 36: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’Other Backgrounds Cont’dWay for PrintingWay for Printing

Application

Win32 APIGraphic

G D IGraphicDevice

Interface

Device Driver

Output Device

Page 37: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’Other Backgrounds Cont’dPrinting ProcedurePrinting Procedure

Get a device context handle for printing on screen

HDC hDC = GetDC(hWnd);

current Print out using the handle via GDI

TextOut(hDC,0,0,”Hello”,5);

LineTo(hDC 100 100);

window instance

LineTo(hDC,100,100);

:

Release the device context handle

R L DC(hW d hDC)ReLeaseDC(hWnd,hDC);

Page 38: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Function WinMainEntry Point of ProgramEntry Point of Program

Similar to “int main(int, char**);”

int APIENTRY WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,LPSTR lpszCmdParam, int nCmdShow);LPSTR lpszCmdParam, int nCmdShow);

hInstance Instance handle of window

hPrevInstancePrevious instance handleCurrently this is always NULL

lpszCmdParam Command arguments (like argv)lpszCmdParam Command arguments (like argv)

nCmdShowShape of program(minimize, normal, maximize, …)

Page 39: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’Function WinMain Cont’dstartstart

create & register a window class

create a window

show the window

get a messagetranslate a message

dispatch a message

WM_QUITfalse

true

translate a message

end

Page 40: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Function WndProcWindow ProcedureWindow Procedure

Specify What to Do When an Event Occurs

LRESULT CALLBACK WndProc(HWND hWnd, UINT message,LRESULT CALLBACK WndProc(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam);

hWnd Instance handle of window

message Types of message

wParam Additional information of messagewParam Additional information of message(different according to message)lParam

Page 41: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

API Example : Hello, World!Using MS Visual C++ 6 0Using MS Visual C++ 6.0

Page 42: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

API Example : Hello, World! Cont’dMake a Workspace for the ExampleMake a Workspace for the Example

Create a ProjectSelect menu : File → New → ProjectsSelect menu : File New Projects

specify the project name

select “Win32 select Win32 Application”

Page 43: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

API Example : Hello, World! Cont’dSelect a Default Skeleton CodeSelect a Default Skeleton Code

empty code

a simple programa simple program: having empty functions (WinMain, WndProc,…)

a simple program: displaying “Hello World!” and having a simple menu

Page 44: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

API Example : Hello, World! Cont’dAdd a New Source File into the ProjectAdd a New Source File into the Project

Select menu : File → New → Files

specify the source file name

select “C++ Source File”

Page 45: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

API Example : Hello, World! Cont’dSource Code

#include <windows.h>

Source Code

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);HINSTANCE g_hInst;LPSTR lpszClass="Hello, World!"; program title

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdParam,int nCmdShow), p , )

{HWND hWnd;MSG Message;MSG Message;WNDCLASS WndClass;g_hInst=hInstance;

Page 46: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’API Example : Hello, World! Cont’dWndClass.cbClsExtra=0;

C 0WndClass.cbWndExtra=0;WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRU

SH);W dCl hC L dC (NULL IDC ARROW)

register a window class

WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);WndClass.hInstance=hInstance;WndClass.lpfnWndProc=(WNDPROC)WndProc;WndClass.lpszClassName=lpszClass;WndClass.lpszMenuName=NULL;

register the dispatch p ;

WndClass.style=CS_HREDRAW | CS_VREDRAW;RegisterClass(&WndClass);

create a

pprocedure

hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,

window

CW_USEDEFAULT,NULL,(HMENU)NULL,hInstance,NULL);ShowWindow(hWnd,nCmdShow);

Page 47: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’API Example : Hello, World! Cont’dhil (G tM g (&M g 0 0 0)) {while(GetMessage(&Message,0,0,0)) {

TranslateMessage(&Message);DispatchMessage(&Message); message DispatchMessage(&Message);

}return Message.wParam;

message loop

}

Page 48: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’API Example : Hello, World! Cont’dLRESULT CALLBACK WndProc(HWND hWnd,UINT message,LRESULT CALLBACK WndProc(HWND hWnd,UINT message,

WPARAM wParam,LPARAM lParam) {switch(message) {

case WM DESTROY: PostQuitMessage(0); break;case WM_DESTROY: PostQuitMessage(0); break;case WM_PAINT:

HDC hDC; PAINTSTRUCT ps; send WM QUIT

hDC = BeginPaint(hWnd, &ps);TextOut(hDC, 10, 10," Hello, World!", 14);

&

WM_QUIT to itselfwhen a window

needs repaintEndPaint(hWnd, &ps); break;

default: return DefWindowProc(hWnd,message,wParam,lParam);}return 0;

}pass the message to the default window procedure by default

Page 49: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’API Example : Hello, World! Cont’dCompilationCompilation

Ctrl+F7 : Compile a Source FileF7 : Build a Executable FileF7 : Build a Executable FileCtrl+F5 : Build and Execute the Program

without Debuggingwithout DebuggingF5 : Build and Execute the Program with Debugging

go(F5)

compile(Ctrl+F7) build

(F7)

execute the program

(F5)

(F7) program(Ctrl+F5)

Page 50: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

Possible Topics for FinalUnix/LinuxUnix/Linux

C Program Memory LayoutFile System

Interprocess Communication Utilities and Editors

EmacsEmacsBatch and Shell ProgrammingC Complier and Linkerp

Static vs Shared Library Gdb & MakeModularity and Abstraction in C

Software Modular Design

Page 51: Computer Programming Lecture 11 - Movement …mrl.snu.ac.kr/~yunjin/winter2007/notes/Lecture11.pdf · 2016-08-24 · Lecture 11 서울대학교 2007 ... o Provide a client-server

’Possible Topics for Final Cont’dScopingScopingC Pointers

Call by ReferenceC y

Memory Management in C Possible Errors in Dynamic Memory Allocationy y

LibrariesStandard I/O Library

Object-Oriented ProgrammingDesign Principles

C, C++, or Java ProgrammingStatic