Blog

Similar documents
쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밊

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint Presentation

C++ Programming

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

Microsoft PowerPoint - Lect04.pptx

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

설계란 무엇인가?

PowerPoint Presentation

Microsoft PowerPoint - C++ 5 .pptx

gnu-lee-oop-kor-lec06-3-chap7

C++ Programming

Slide 1

PowerPoint Presentation

Microsoft PowerPoint - additional03.ppt [호환 모드]

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

Microsoft PowerPoint - Chapter 6.ppt

C++ Programming

C++ Programming

Microsoft PowerPoint - additional07.ppt [호환 모드]

chap10.PDF

프입2-강의노트-C++배경

PowerPoint Template

PowerPoint Template

Microsoft PowerPoint - additional06.ppt [호환 모드]

C++ 기본문법 정리

쉽게 풀어쓴 C 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - additional01.ppt [호환 모드]

01-OOPConcepts(2).PDF

Programming hwp

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

Microsoft PowerPoint 장강의노트.ppt

쉽게 풀어쓴 C 프로그래밍

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - additional08.ppt [호환 모드]

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Slide 1

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft PowerPoint - Chap12-OOP.ppt

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

JAVA PROGRAMMING 실습 08.다형성

PowerPoint 프레젠테이션

Design Issues

제 1 강 희망의 땅, 알고리즘

17장 클래스와 메소드

Microsoft PowerPoint - 2강

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

유니티 변수-함수.key

No Slide Title

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

C프로-3장c03逞풚

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - Java7.pptx

PowerPoint Presentation

No Slide Title

080629_CFP °ø°³¿ë.hwp

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint 프레젠테이션

Microsoft PowerPoint - 6주차.pptx

제 1 장 기본 개념

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

KNK_C_05_Pointers_Arrays_structures_summary_v02

C# Programming Guide - Types

윤성우의 열혈 TCP/IP 소켓 프로그래밍

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

PowerPoint 프레젠테이션

JVM 메모리구조

C++ 기본문법 정리

JAVA PROGRAMMING 실습 02. 표준 입출력

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

금오공대 컴퓨터공학전공 강의자료

5장.key

Microsoft PowerPoint - 02-Class Review.pptx

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint Presentation

제11장 프로세스와 쓰레드

Microsoft PowerPoint - 2-Objective-C 기초

초보자를 위한 자바 2 21일 완성 - 최신개정판

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밍

02장.배열과 클래스

Slide 1

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

Transcription:

Objective C http://ivis.cwnu.ac.kr/tc/dongupak twitter : @dongupak 2010. 10. 9..

Blog

WJApps Blog

Introduction

? OS X -. - X Code IB, Performance Tool, Simulator

: Objective C API : Cocoa Touch API

API.

Objective C? C++ C SW C C++? C++.

C++ Bjarne Stroustrup

Window Phone 7 MS OS Silverlight, XNA C++ C#

Android Java C++? Bada OS

Object Oriented Programming : Power C++,

객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 2010 인피니티북스 All rights reserved

객체지향의과정 2010 인피니티북스 All rights reserved

객체란? 객체 (object) 는상태와동작을가지고있다. 객체의상태 (state) 는객체의특징값 ( 속성 ) 이다. 객체의동작 (behavior) 또는행동은객체가취할수있는동작 9800km 2010 인피니티북스 All rights reserved

멤버변수와멤버함수 2010 인피니티북스 All rights reserved

메시지 소프트웨어객체는메시지 (message) 를통해다른소프트웨어객체와통신하고서로상호작용한다. 2010 인피니티북스 All rights reserved

중간점검문제 1. 객체들은 전달을통해서서로간에상호작용을한다. 2. 자동차객체에서생각할수있는메시지와매개변수에대하여나열하여보라. 2010 인피니티북스 All rights reserved

클래스 클래스 (class): 객체를만드는설계도 클래스로부터만들어지는각각의객체를특별히그클래스의인스턴스 (instance) 라고도한다. 2010 인피니티북스 All rights reserved

절차지향과객체지향 절차지향프로그래밍 (Procedural Programming) 문제를해결하는절차를중요하게생각하는소프트웨어개발방법. 이들절차는모두함수라는단위로묶이게된다. 2010 인피니티북스 All rights reserved

절차지향과객체지향 객체지향프로그래밍 (Object-Oriented Programming) 데이터와함수를하나의덩어리로묶어서생각하는방법이다. 데이터와함수를객체로묶는것을캡슐화 (encapsulation) 라고부른다. 2010 인피니티북스 All rights reserved

객체지향의장점 객체들을조립하여서빠르게소프트웨어를만들수있다. 2010 인피니티북스 All rights reserved

자동차경주게임의예 struct Car { int speed; int gear; char *pcolor; }; void init(car& c, char *color); void start(car& c); void stop(car& c); int get_speed(car& c); void set_speed(car& c, int speed); class Car { int speed; int gear; char *pcolor; public: void init(char *color); void start(); void stop(); int get_speed(); void set_speed(int speed); }; int main() { Car car; init(car, "red"); start(car); set_speed(car, 60); stop(car); return 0; } 2010 인피니티북스 All rights reserved int main() { Car car; car.init("red"); car.start(); car.set_speed(60); car.stop(car); return 0; }

객체지향의개념들 캡슐화 (encapsulation) 정보은닉 (information-hiding) 상속 (inheritance) 다형성 (polymorphism) 2010 인피니티북스 All rights reserved

캡슐화 캡슐화 (encapsulation) 란데이터와연산들을객체안에넣어서묶는다는의미이다. 2010 인피니티북스 All rights reserved

정보은닉 객체내부의데이터와구현의세부사항을외부세계에게감추는것. 외부세계에영향을끼치지않으면서쉽게객체내부를업그레이드할수있다. 2010 인피니티북스 All rights reserved

상속 상속은기존의코드를재활용하기위한기법으로이미작성된클래스 ( 부모클래스 ) 를이어받아서새로운클래스 ( 자식클래스 ) 를생성하는기법이다. 2010 인피니티북스 All rights reserved

다형성 다형성이란객체가취하는동작이상황에따라서달라지는것을의미한다. -> 함수이름의재사용 2010 인피니티북스 All rights reserved

쉬운디버깅 예를들어서절차지향프로그램에서하나의변수를 1000 개의함수가사용하고있다고가정해보자. -> 하나의변수를 1000 개의함수에서변경할수있다. 객체지향프로그램에서 100 개의클래스가있고클래스당 10 개의멤버함수를가정해보자. -> 하나의변수를 10 개의함수에서변경할수있다. 어떤방법이디버깅이쉬울까? 2010 인피니티북스 All rights reserved

객체지향의장점 신뢰성있는소프트웨어를쉽게작성할수있다. 코드를재사용하기쉽다. 업그레이드가쉽다. 디버깅이쉽다. 2010 인피니티북스 All rights reserved

중간점검문제 1. 자바에서코드재사용이쉬운이유는관련된 와 이하나의덩어리로묶여있기때문이다. 2. 정보은닉이란 을외부로부터보호하는것이다. 3. 정보를은닉하면발생하는장점은무엇인가? 2010 인피니티북스 All rights reserved

QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 2010 All rights reserved

클래스의구성 클래스 (class) 는객체의설계도라할 수있다. 클래스는멤버변수와멤버함수로이루어진다. 멤버변수는객체의속성을나타낸다. 멤버함수는객체의동작을나타낸다. 2010 All rights reserved

클래스정의의예 class Car { public: // 멤버변수선언 int speed; // 속도 int gear; // 기어 string color; // 색상 // 멤버함수선언 void speedup() { // 속도증가멤버함수 speed += 10; }!! }; void speeddown() { // 속도감소멤버함수 speed -= 10; } 2010 All rights reserved

객체 int 타입의변수를선언하는경우 int i; 클래스도타입으로생각하면된다. Car 타입의변수를선언하면객체가생성된다. Car mycar; 2010 All rights reserved

객체의사용 객체를이용하여멤버에접근할수있다. 이들멤버변수에접근하기위해서는도트 (.) 연산자를사용한다. mycar.speed = 100; mycar.speedup(); mycar.speeddown(); 2010 All rights reserved

예제 #include <iostream> #include <string> using namespace std; class Car { public: // 멤버변수선언 int speed; // 속도 int gear; // 기어 string color; // 색상 // 멤버함수선언 void speedup() { // 속도증가멤버함수 speed += 10; } }; void speeddown() { // 속도감소멤버함수 speed -= 10; } 2010 All rights reserved

Car globalcar; int main() { Car localcar; // 전역객체 // 지역객체 globalcar.speed = 100;; localcar.speed = 60; localcar.color = "white"; cout << " 현재 global 차의속도는 " << globalcar.speed << endl; cout << " 현재 local 차의속도는 " << localcar.speed << endl; } return 0; 현재 global 차의속도는 100 현재 local 차의속도는 60 계속하려면아무키나누르십시오... 2010 All rights reserved

중간점검문제 1. 객체들을만드는설계도에해당되는것이 이다. 2. 같은종류의객체가여러개생성될때각객체의변수와멤버함수는공유되는가? 아니면각객체마다별도로만들어지는가? 3. 클래스선언시에클래스안에포함되는것은 과 이다. 4. 객체의멤버에접근하는데사용되는연산자는 이다. 5. 각객체마다별도로가지고있는것은클래스의 이다.. 2010 All rights reserved

접근제어 2010 All rights reserved

private 와 public 아무것도지정하지않으면디폴트로 private class Car { // 멤버변수선언 int speed; // 속도 int gear; // 기어 string color; // 색상 } int main() { Car mycar; mycar.speed = 100; // 오류! } 2010 All rights reserved

예제 #include <iostream> #include <string> using namespace std; class Employee { string name; // private 로선언 int salary; // private 로선언 int age; // private 로선언 // 직원의월급을반환 int getsalary() { return salary; } public: // 직원의나이를반환 int getage() { return age; } // 직원의이름을반환 string getname() { return name; } }; int main() { Employee e; e.salary = 300; // 오류! private 변수 e.age = 26; // 오류! private 변수 int sa = e.getsalary(); // 오류! private 멤버함수 string s = e.getname(); // OK! int a = e.getage(); // OK } 2010 All rights reserved

멤버변수 멤버변수 : 클래스안에서그러나멤버함수외부에서정의되는변수 class Date { public: void printdate() { } cout << year << "." << month << "." << day << endl; int getday() { return day; } } // 멤버변수선언 int year; string month; int day; 2010 All rights reserved

접근자와설정자 접근자 (accessor, getter): 멤버변수의값을반환 ( 예 ) getbalance() 설정자 (mutator, setter): 멤버변수의값을설정 ( 예 ) setbalance(); 2010 All rights reserved

예제 class Car { private: // 멤버변수선언 int speed; // 속도 int gear; // 기어 string color; // 색상... public: // 접근자선언 int getspeed() { return speed; } // 설정자선언 void setspeed(int s) { speed = s; } 2010 All rights reserved

예제 // 접근자선언 int getgear() { return gear; } // 변경자선언 void setgear(int g) { gear = g; } // 접근자선언 string getcolor() { return color; } // 변경자선언 void setcolor(string c) { color = c; } }; 2010 All rights reserved

접근자와설정자의장점 설정자의매개변수를통하여잘못된값이넘어오는경우, 이를사전에차단할수있다. 멤버변수값을필요할때마다계산하여반환할수있다. 접근자만을제공하면자동적으로읽기만가능한멤버변수를만들수있다. void setspeed(int s) { if( s < 0 ) speed = 0; else speed = s; } 2010 All rights reserved

멤버함수의외부정의 2010 All rights reserved

클래스선언과구현의분리 클래스의선언과구현을분리하는것이일반적 2010 All rights reserved

Coffee Break

C++ vs Obj C C++. friend function,,

Objective C C Objective-C++ C++...

Good Reference

: http://chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf

Objective-C 2.0 : Cocoa Touch @property Fast enumeration, @optional @required

function vs method function C Objective C method +,-,

scope

forward

instance class

Objective-C Grammar

매개변수에 대한태그

Smalltalk..

selector

.

C# partial.

Category

instance

id

(destructor) dealloc

AutoreleasePool autorelease

AutoreleasePool

접근자와설정자 접근자 (accessor, getter): 멤버변수의값을반환 ( 예 ) getbalance() 설정자 (mutator, setter): 멤버변수의값을설정 ( 예 ) setbalance(); 2010 All rights reserved : http://maclove.pe.kr/28

setter? -(void) setimage:(uiimage *)newimage { image = newimage; } newimage image image newimage. newimage image

@property @property (nonatomic, retain) UIImage* image; -(void)setimage:(uiimage *)newimage{ if(image!= newimage) { [image release]; image = [newimage retain]; } } newimage retain. newimage release retain count 1.

And more property, exception, delegate pattern

Objective C. Cocoa API Objective C. Objective C.

Object Oriented Programming. ios, Android, Windows Phone 7 C++. Objective C Java, C# OOP.

Q & A