Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Oops/내용/2014.09.12: Difference between revisions

From ZeroWiki
imported>miura0806
No edit summary
imported>miura0806
No edit summary
Line 39: Line 39:
** <stdio.h> -> &lt;cstdio&gt;, <time.h> -> &lt;ctime&gt;
** <stdio.h> -> &lt;cstdio&gt;, <time.h> -> &lt;ctime&gt;
* C++에서는 프로그램 중간에 변수를 선언할 수 있다.
* C++에서는 프로그램 중간에 변수를 선언할 수 있다.
for(int i=0; i&lt;j ;i++){
     /*blah*/
     /*blah*/
  }
  }
* Default 인자
* Default 인자
void box(int x, int y, int z = 3){
     returm x*y*z;
     returm x*y*z;
  }
  }
 
** box(1,2)의 경우 마지막 인자는 3으로 자동지정된다.
box(1,2)의 경우 마지막 인자는 3으로 자동지정된다.
** default 인자는 끝에서 부터 명시해 준다.
default 인자는 끝에서 부터 명시해 준다.


* Class
* Class
  클래스는 멤버 변수와 멤버 함수를 가진다. 구조체 정의와 유사하지만 클래스 안에는 함수를 선언하는 것이 가능하다.정의는 구조체 밖에서 정의한다. 클래스는 OOP의 핵심이다.
** 클래스는 멤버 변수와 멤버 함수를 가진다.
클래스와 객체의 관계는 붕어빵틀과 붕어빵의 관계이다.
** 구조체 정의와 유사하지만 클래스 안에는 함수를 선언하는 것이 가능하다.
::는 틀로의 접근이고, .는 빵에 접근하는 개념이다.
** 정의는 구조체 밖에서 정의한다.
 
** 클래스는 OOP의 핵심이다.
class DayOfYear
* 클래스와 객체의 관계는 붕어빵틀과 붕어빵의 관계이다.
{
* ::는 틀로의 접근이고, .는 빵에 접근하는 개념이다.
public:
class DayOfYear
void output;
{
private:
public:
int month;
void output;
int day;
private:
int month;
};
int day;
 
void DayOfYear::output(){
};
std::cout<<"Hello";
}
void DayOfYear::output(){
 
std::cout&lt;&lt;"Hello";
접근제한자
}
public
* 접근제한자
외부에서 접근이 가능함.(클래스 기준)
** public
클래스 내의 멤버변수는
** 외부에서 접근이 가능함.(클래스 기준)
private
** private
외부에서 접근이 불가능함.
** 외부에서 접근이 불가능함.
protected
** protected


* OOP 규칙
* OOP 규칙
 
** 정보 은닉
정보 은닉
** 클래스 사용자는 연산이 어떻게 동작하는 지에 대한 세부사항은 알 수 없음
클래스 사용자는 연산이 어떻게 동작하는 지에 대한
** 데이터 추상화
세부사항은 알 수 없음
** 사용자는 클래스 내에서 데이터가 어떻게 취급되는지에 대한 사항을 알지 못함
 
** 캡슐화
데이터 추상화
** 데이터와 연산을 함께 제공하지만, 자세한 사항은 숨김
사용자는 클래스 내에서 데이터가 어떻게 취급되는지에
** 프로그램의 자세한 구조를 몰라도 프로그램을 쓸 수 있어야 함. 자세한 내용은 알려줄 필요가 없다.
대한 사항을 알지 못함
 
캡슐화
데이터와 연산을 함께 제공하지만, 자세한 사항은 숨김
 
프로그램의 자세한 구조를 몰라도 프로그램을 쓸 수 있어야 함.
자세한 내용은 알려줄 필요가 없다.



Revision as of 09:06, 17 September 2014

  • C++에서 Input/Output 객체로는 cin, cout, cerr이 있다.
  • 위의 객체들은 <iostream>에 정의되어 있다.
  • #include <iostream>과 같은 전처리기 지시자는 파일 시작부에 명기 되어야 한다.
  • cout - cout은 C에서의 printf와 같은 역할을 한다.
    • ex)
cout<<numberOfGames<<"Games Played"<<endl;
    • endl객체는 \n과 같은 역할이지만 endl의 사용을 권장한다.
    • 단점 : 숫자 값의 출력 형식을 지정하지 않아 의도대로 출력되지 않을 수도 있다.
  • 숫자 값의 출력 형식 지정
cout.setf(ios::showpoin);
cout.precision(2);
  • cerr
    • cerr객체는 cout과 동일하게 동작한다.
    • 일반 출력과 에러 출력간의 구분 메커니즘을 제공
  • cin
    • cout과 반대로 '>>'을 사용한다.
cin>>num;
  • namespace
    • 정의된 이름의 집합
    • 대표적으로 std가 있다. cou, cin은 사실 std::cout, std::cin이다. std라는 네임스페이스에 속해있는데 이를 생략하기 위해 namespace를 쓴다.
    • using namespace는 하나만 사용한다.
int main(){
    std::cout<<"Hello"<<std::endl;
}
using namespace std;

int main(){
    cout<<"Hello"<<endl;
}
  • C에서 온 라이브러리
    • C++의 경우 헤더파일의 확장자인 .h를 생략한다.
    • C에서 라이브러리의 경우 .h를 생략하고 c를 앞에 붙인다
    • <stdio.h> -> <cstdio>, <time.h> -> <ctime>
  • C++에서는 프로그램 중간에 변수를 선언할 수 있다.
for(int i=0; i<j ;i++){
    /*blah*/
}
  • Default 인자
void box(int x, int y, int z = 3){
    returm x*y*z;
}
    • box(1,2)의 경우 마지막 인자는 3으로 자동지정된다.
    • default 인자는 끝에서 부터 명시해 준다.
  • Class
    • 클래스는 멤버 변수와 멤버 함수를 가진다.
    • 구조체 정의와 유사하지만 클래스 안에는 함수를 선언하는 것이 가능하다.
    • 정의는 구조체 밖에서 정의한다.
    • 클래스는 OOP의 핵심이다.
  • 클래스와 객체의 관계는 붕어빵틀과 붕어빵의 관계이다.
  • ::는 틀로의 접근이고, .는 빵에 접근하는 개념이다.
class DayOfYear
{
	public:
		void output;
	private:
		int month;
		int day;
			
};

void DayOfYear::output(){
	std::cout<<"Hello";
}
  • 접근제한자
    • public
    • 외부에서 접근이 가능함.(클래스 기준)
    • private
    • 외부에서 접근이 불가능함.
    • protected
  • OOP 규칙
    • 정보 은닉
    • 클래스 사용자는 연산이 어떻게 동작하는 지에 대한 세부사항은 알 수 없음
    • 데이터 추상화
    • 사용자는 클래스 내에서 데이터가 어떻게 취급되는지에 대한 사항을 알지 못함
    • 캡슐화
    • 데이터와 연산을 함께 제공하지만, 자세한 사항은 숨김
    • 프로그램의 자세한 구조를 몰라도 프로그램을 쓸 수 있어야 함. 자세한 내용은 알려줄 필요가 없다.