지난번에 string class에 대해서 설명을 했지?
이번엔 본격적으로 OOP의 꽃인 class에 대해 설명을 시작 할꺼야.

메소드에 관해선 JAVA강좌1편을 참고하도록 하고,
class라는것은 숙제 2에 나오는 Object를 찍어내는 틀? 정도로 생각하면되.

class를 만드는 방법은 #include 와 int main()사이에

class 사람
{
private:
//맴버변수들
pubric:
//메소드들
}

이렇게 하면 되

class안에는 멤버변수와 메소드가 들어가는데, 멤버변수라는것은 각 오브젝트마다 갖고있는 변수들이야. 예를 들면

사람 class인 man1 Object를 만들었다고 하자.
그러면 사람 class안에 선언해놓은 멤버변수와 메소드를 모두 갖는 man1 Object가 생성되는거야 사람 안에는 팔, 다리, 머리 등이 있고 앉기 서기 걷기 뛰기등이 있지?
앞의 팔 다리 머리 혈액 등이 멤버변수, 앉기 서기 걷기 뛰기등이 메소드야.

이제 man1한테 명령을 해야 하는데, 상사가 팔을 직접 잡고 움직이면 기분 나쁘지? 마찬가지로 Object도 멤버변수에 직접 값을 대입하면 기분 나빠하니까 멤버변수를 조정하는 메소드를 만들어서 man1.움직여라(팔,15˚) 이런식으로 해야 man1이 기분나빠하지않고 정확히 움직일수 있단말이야, 알았지?

그리고 니가 신이라고 생각하고, 이제 막 지구에 생명체를 만든다고 해봐.

사람 class를 만들고 강아지 class를 만드는데 사람도 걷기 뛰기 등이 있고, 강아지도 걷기 뛰기등이 있잖아. 그래서 생각해낸거야 동물 class를 만들고 이것을 좀더 확장해서 사람 class를 만들고 강아지 class를 만들면 걷기 뛰기등을 다시 만들 필요도 없고, 기린 class를 만들때 뛰기를 만드는 것을 잊어먹지도 않을것 아냐?
이런것을 상속이라고 해.
상속을 쓰는 방법은

class 사람 : public 동물
{
private:
//맴버변수들
pubric:
//메소드들
}

이렇게 하면 동물 클래스의 맴버변수와 메소드가 사람클래스에도 모두 생겨,

근데 여기서 또 문제가 되는게, 사람은 2족보행이고 강아지는 4족 보행이잖아?
이 경우는 메소드의 이름은 똑같이 걷기 뛰기 이지만 내용은 달라야 겠지?
이거는 어떻게 할까?

아는사람은 정답을 댓글로!!
모르는사람은 알려달라고 댓글로!!!

어쩨 방문자는 200이 넘는데, 댓글은 하나도 없고, 방명록도 없어?

'대학생활 > C++' 카테고리의 다른 글

내맘대로 강좌 C++편 6 (함수편)  (5) 2009.03.23
내맘대로 강좌 C++편 5  (2) 2009.03.19
내맘대로 강좌 C++편 3  (4) 2009.03.17
내맘대로 강좌 C++편 2  (1) 2009.03.17
내맘대로 강좌 C++편 1  (0) 2009.03.16

이번엔 string 형이야.

C++은 대소문자를 구분하니 주의하도록

string은 말 그대로 문자열이야. 문자열이란 "Hello world"같이 따옴표로 묶여있는 char형의(문자)들의 배열이지.

string형은 형이라기보다는 클래스인데, 왜냐하면 생 문자열은 char string[]속에 넣는게 맞거든, string클래스는 이것을 포함하면서 간단한 문자열 메소드들을 갖고 있어.

예를 들면 length()메소드 라던가 substr(int, int)메소드같은

length()메소드는 개체에 들어있는 문자열의 길이를 int형으로 반환하는 것이고,

substr(a, b)는 개체의 문자열에서 a번째 글자부터 b번째 글자까지의 문자열을 다시 string형으로 반환하는 메소드야. 또한 + 연산자가 있어서 두개 이상의 string을 합칠수도 있지.

숙제!!

1 #include <iostream>
2 #include <string>
3
4 using namespace std; 5
6 int main()
7 {
8    cout << "Enter your full name (first middle last): ";
9    string first;
10   string middle;
11   string last;
12   cin >> first >> middle >> last;
13   string initials = first.substr(0, 1)
14      + middle.substr(0, 1) + last.substr(0, 1);
15   cout << "Your initials are " << initials << "\n";
16
17   return 0;
18 }

이 소스를 실행해서 표시값을 댓글로!!

'대학생활 > C++' 카테고리의 다른 글

내맘대로 강좌 C++편 5  (2) 2009.03.19
내맘대로 강좌 C++편 4  (2) 2009.03.18
내맘대로 강좌 C++편 2  (1) 2009.03.17
내맘대로 강좌 C++편 1  (0) 2009.03.16
2주차 C++숙제,,(파일 삭제)  (0) 2009.03.15

C++과 JAVA를 동시에 보는 사람은 알겠지만,,,
C++이 좀더 내용이 적은듯 하지만, 그건 내가 C++은 내머릿속에 있는것을 정리하기 때문이고
JAVA는 책보고 공부한걸 써서 그래,,

오늘은 인풋과 아웃풋에 대해 알아볼꺼야. 그럼 또 예제소스부터

1  #include <iostream>
2
3  using namespace std;
4
5  int main()
6  {
7     cout << "How many pennies do you have? ";
8     int pennies;
9     cin >> pennies;
10
11    cout << "How many nickels do you have? ";
12    int nickels;
13    cin >> nickels;
14
15    cout << "How many dimes do you have? ";
16    int dimes;
17    cin >> dimes;
18
19    cout << "How many quarters do you have? ";
20    int quarters;
21    cin >> quarters;
22
23    double total = pennies * 0.01 + nickels * 0.05 +
24       dimes * 0.10 + quarters * 0.25;
25          /* total value of the coins */
26
27    cout << "Total value = " << total << "\n";
28
29    return 0;
30 }
자,, 지난번에 아웃풋 하는 방법인 cout은 설명을 했고,
새로 생긴것만 보면 cin이라는게 생겼지? 그리고 화살표 방향도 변수에서 함수쪽이 아닌
함수에서 변수쪽으로 되어있지?

17    cin >> dimes;

간단히 말하면 이게 인풋 끝이야. 프로그램을 실행하다가 cin을 만나면 잠시 멈추고 커서가 깜빡깜빡 하거든? 이때 글이나 숫자를 쓴 다음에 엔터를 치면 변수에 저장이 되는거야.

하지만 이때 변수의 형(int, double등)과 인풋값이 다르면 런타임에러(소스에는 에러가 없지만, 실제 작동은 의도치 않은대로 되는 에러)가 발생할수 있으니까 인풋을 받기전에는 cout으로 적당히 "숫자를 입력하세요" 라던지 "이름 : "이라고 출력해주는 쎈쓰!

왠지 짧다고 생각되면, 댓글을 남기는 쎈쓰!!(내가 잠이 많아서 오전엔 이것밖에 못쓰지만,,, 혹시 밤새 댓글이 달렸나? 하고 일찍일어날수도 있다는거,,,)

'대학생활 > C++' 카테고리의 다른 글

내맘대로 강좌 C++편 5  (2) 2009.03.19
내맘대로 강좌 C++편 4  (2) 2009.03.18
내맘대로 강좌 C++편 3  (4) 2009.03.17
내맘대로 강좌 C++편 1  (0) 2009.03.16
2주차 C++숙제,,(파일 삭제)  (0) 2009.03.15

빨리하고 물리 보고서 써야 되는데,,,

Rectangle box = new Rectangle(5, 10, 20, 30);
이것이 뜻하는 것은,

Rectangle box 먼저 Rectangle 클래스대로 box개체의 공간을 할당 받는거야.

근데 공간만 있지 거기에 내용이 없잖아? 그래서

new Rectangle(5, 10, 20, 30)
라고 새로운 (5,10)에 위치하고 (가로 X 세로) = (20 X 30)인 직사각형을 만드는거야.

그다음에 Rectangle클래스에 있는 get뭐시기 메소드를 이용하면 가로 세로 x y를 모두 구할수 있어

예를 들면

System.out.println(box.getwidth);
하면 아마 20이 출력될꺼야.

이런식으로 하는거지,,,
나머지는 직접 읽어봐도 간단한 설명과 예제니까 직접 wiley를 읽어 보라고 안그러면 license값이 아깝잖아?

'대학생활 > JAVA' 카테고리의 다른 글

내맘대로 강좌 JAVA편 4  (0) 2009.03.25
내맘대로 강좌 JAVA편 3  (0) 2009.03.25
3주차 JAVA숙제가 나왔습니다^^  (2) 2009.03.23
내맘대로 강좌 JAVA편 1  (3) 2009.03.16
2주차 JAVA숙제,,,(파일 삭제)  (0) 2009.03.15

물리 보고서 써야되는데,,,

우선 이것도 Chapter 1~2의 내용을 정리해 볼게,,,

Chapter 1. Introduction

이거는 간단히 프로그래밍이란 이런것이다... 니까 PASS!!

그래서 Chapter 2. using object로 넘어갈께,,

여기서는 "In Java, every value has a type" 이 말로 Chapter를 시작하지.

뭐 모든 프로그래밍 언어가 그렇지만 Java에서는 모든 value에는 type라는 형식을 매겨,

int, String, double등

int는 interger의 약자(?)로 정수형, String은 문자열 Class, double는 배정도 실수형이야.

그리고 JAVA는 본격적인 OOP 언어 답게 모든것을 Class단위로 처리해서

int luckyNumber;
luckyNumber = 13;
System.out.println(luckyNumber);
이런 소스가 나와
먼저
int luckyNumber;
이건 luckyNumber라는 정수형 변수를 선언하는거, 그밑에 luckyNumber = 13;이거는 13을 대입하라는거야,
그리고
System.out.println(luckyNumber);
이거는 System.out개체의 println메소드를 사용해서 luckyNumber변수의 값을 출력하라는거야.
근데 System.out.println 여기까지 쓰면 밑에나 옆에 "System.out.println(int 뭐시기)"라고 상자가 뜨고 거기에보면
"System.out.println(String 뭐시기)"도 있고 같은이름에 괄호속만 다른 뭐가 잔뜩 보이지?

이게 다 하나의 type에는 다른 type가 못들어 가거든? 그때 같은이름으로 다른 type도 받아들이기 위해 여러가지를 만든건데,, 이건 또 나중에,,,

"Objects are entities in your program that you manipulate by calling methods."

 이 말은 개체에는 메소드가 들어있다,,, 라고만 알면 되.

개체란 OOP의 기본인데, 사람이 움직이는것을 표현하는 프로그램을 만드는데,

사람의 손도 움직이고 발도 움직이고 해야 하잖아. 그리고 사람이 1사람이 아니면 여러개를 만들어야 하지?

이런 불편함을 없애기 위해서 사람class 를 만들어 놓고 사람A개체를 만들어서 사람A의 손을 움직여라

사람B의 손을 움직여라. 이렇게 하는거야. 이때 "사람A"는 개체  "손"은 데이터 "움직여라" 는 메소드가 되는거야

그래서 사람A.움직여라(손,15˚); 하면 사람A개체의 손이 15˚만큼 움직이게 되는거지.

그다음에 나오는것은 Method Parameters and Return Values인데,

Method Parameters 라는것은 아까 움직여라 메소드에 준 "손,15˚"을 뜻하는거고 Return Values는 수학의 함수값이라고 생각하면되.

수학에서 f(x)=y라고 하면 f는 메소드 x는 파라메터 y는 리턴값이지.

그다음 가장 중요한거는 오브젝트 생성인것 같은데,, 방법은 간단해. 원하는 클래스를 import한뒤에

Rectangle box = new Rectangle(5, 10, 20, 30);
이런식으로 생성하면 되.
 

'대학생활 > JAVA' 카테고리의 다른 글

내맘대로 강좌 JAVA편 4  (0) 2009.03.25
내맘대로 강좌 JAVA편 3  (0) 2009.03.25
3주차 JAVA숙제가 나왔습니다^^  (2) 2009.03.23
내맘대로 강좌 JAVA편 2  (0) 2009.03.16
2주차 JAVA숙제,,,(파일 삭제)  (0) 2009.03.15

먼저 Wiley교재의 Chapter1과 2를 설명할께,,

Chapter1. Introduction.

이 부분은 말 그대로 Introduction.

프로그래밍이란 이런것이다. 라고 소개하는 part니까 Pass.

그 다음은 Chapter2. Fundamental Data Types.

이 부분은 이제 C++의 기초를 시작하는거야.

먼저 예제 소스를 보자.

1  #include <iostream>
2
3  using namespace std;
4
5  int main()
6  {
7     int pennies = 8;
8     int dimes = 4;
9     int quarters = 3;
10
11    double total = pennies * 0.01 + dimes * 0.10
12       + quarters * 0.25; /* total value of the coins */
13
14    cout << "Total value = " << total << "\n";
15
16    return 0;
17  }
처음엔 이게 뭔소리야? 할 수 도 있지만 보자.(참고로 실제로 써보려면 맨앞의 줄번호는 지워야 한다는,,,)

1  #include <iostream>
using namespace std;

이 부분은 앞으로 iostream이라는 헤더에 쓰인 함수들을 갖다 쓰겠다는 선언과 std네임스페이스를 사용하겠다는 선언이야.
헤더라든지 함수라던지 네임스페이스는 앞으로 배울거니까 Pass!!

그 다음은
5  int main()

이건 프로그램이 실제로 시작되는 main함수의 선언이야 맨 앞의 int는 함수의 반환형이고, () <-이건 함수니까 인자가 들어간다는 표시지만, 공백은 아무것도 인자로 받지 않는다는 암시적인 표시. 명시적으로 하려면 int main(void) 이렇게 해야 되지만, 귀찮으면 Pass!!

이번 쳅터에서 가르치려는 핵심은 요고

7     int pennies = 8;
8     int dimes = 4;
9 int quarters = 3;
10
11    double total = pennies * 0.01 + dimes * 0.10
12       + quarters * 0.25; /* total value of the coins */

int는 4바이트 짜리 정수인 변수를 만들겠다는 거야.
정수라는 것은 중학교때 배운 바로 그 정수!! 소수점이 없는 수를 말하는건데 -2147483648~2147483647의 값을 저장할수 있어.

그리고 double는 실수형 이라고해서 실수 즉 소수점까지 나타내는 자료형이야. 하지만 지수꼴로 메모리에 근사적으로 저장을 해서 매우 작은(0.00000000001)같은것은 계산에 오차가 생기기도 한대,,,

그리고 변수라는것은 우리가 메모리에 그 쟈료형의 공간을 만들어서 앞으로 계속 써먹겠다는거야.
수학에서 x, y, a, b라고 쓰는 것 처럼,,, 그리고

9 int quarters = 3;

처럼 하는것을 선언하면서 초기화한다 라고 하고,

9 int quarters;
10 quaters = 3;

이렇게 하는것을 선언따로 초기화 따로라고 해.
그럼

11    double total = pennies * 0.01 + dimes * 0.10
12       + quarters * 0.25; /* total value of the coins */

이것은 뭐냐?라고 하면, C++이나 JAVA는 모두 형식이 자유로운 free form 언어거든?
그래서 아무대나 엔터치고 아무대나 띄워써도 다 인식을 해

(하지만 변수나 함수이름에 띄워쓰기나 엔터는 오류난다는거,,,)
ex)
total=1;                  (o)
total                =1;  (o)

to        tal = 1;        (x)

한마디로 total을 선언하면서 total의 값으로

pennies * 0.01 + dimes * 0.10 + quarters * 0.25 을 넣어준다는 거야.

그 다음에 나오는

14    cout << "Total value = " << total << "\n";
이거는 cout이라는 개체가 있거든? (C++은 개체지향언어(OOP)잖아) 그거에 << 함수를 오버로딩 한건데,,, 이건 넘어가고,

"Total value = "이라는 글씨와 total이라는 변수의 값을 출력하고"\n"은 한줄 띄운것의 기호니까 실제 표시는

Total value = 1.23¶

이렇게 되겠지,,,

'대학생활 > C++' 카테고리의 다른 글

내맘대로 강좌 C++편 5  (2) 2009.03.19
내맘대로 강좌 C++편 4  (2) 2009.03.18
내맘대로 강좌 C++편 3  (4) 2009.03.17
내맘대로 강좌 C++편 2  (1) 2009.03.17
2주차 C++숙제,,(파일 삭제)  (0) 2009.03.15

일단,,, 주목적은 포스팅 수를 늘이기위해,,, 다 같이 공부를 하기 위해서 이니까,,,

오타나 오류같은것이 있으면 언제든지 태클!!!

일단 나는 90이지만,,, 인터넷상이고,,, 볼사람도 별로 없을것 같으므로,

말은 놓겠습니다..

그럼 이제부터 달리겠어!!!

'대학생활' 카테고리의 다른 글

지금은 집 입니다.  (0) 2009.12.22
UNIST 2009년 2학기 기말고사 시간표  (0) 2009.12.05
내맘대로 강좌 공지!!!  (1) 2009.03.25
내맘대로 강좌 공통편 1  (0) 2009.03.20
학생증 드디어 나왔습니다!!!  (0) 2009.03.16