본문 바로가기

반응형

Programming/C++ 2

(32)
[C++] 17. 파일 입출력 파일 입출력 프로그램과 파일을 연결시키는 방법 프로그램이 파일의 내용을 읽는 방법 프로그램이 파일을 생성하고 파일을 기록하는 방법 C++에서는 입출력 클래스 패키지에서 파일 입출력을 표준 입출력처럼 다룬다. 파일에 기록하려면 ofstream 객체를 생성한 후, 삽입 연산자나 get()과 같은 istream 메서드를 사용한다. 그러나 파일들은 표준 입출력보다 더 많은 관리가 필요하다. 예를 들어, 새롭게 열리는 파일을 입력 스트림과 연결시켜야 한다. 파일은 읽기 전용 모드 또는 쓰기 전용 모드, 읽기/쓰기전용모드로 열 수 있다. 파일에 기록한다는 것은, 새로운 파일을 생성하는 것일 수도 있고, 기존 파일을 대체하는 것일 수도 있고, 기존 파일의 뒤에 덧붙이는 것일 수도 있다. 그게 아니면 파일 안의 여기저..
[C++ 연습문제] 10장. 객체와 클래스 (1) 1. 클래스란 무엇인가? 더보기 클래스란 속성과 메서드를 함께 묶어서 기본 데이터형처럼 호출하도록 만들어진 데이터형이다. 더보기 클래스는 사용자 정의 데이터형의 정의이다. 클래스 선언은 데이터를 저장하는 방법을 서술한다. 또한 클래스 선언은 데이터에 접근하여 그들을 조작하는 데 사용할 수 있는 메서드(클래스 멤버 함수)를 서술한다. 2. 클래스는 추상화, 캡슐화, 데이터 은닉을 어떻게 수행하는가? 더보기 클래스는 private 부분에 멤버 데이터를 정의하고, public 부분에 멤버 데이터를 접근 할 수 있는 멤버함수를 정의해서 private에 있는 멤버데이터의 직접접근을 막아서 수행한다. 더보기 클래스는 클래스 메서드의 public 인터페이스를 통해 클래스 객체를 대상을 수행할 수 있는 연산을 서술 :..
[C++ 요약] 10장. 객체와 클래스 OOP는 프로그램이 데이터를 표현하는 방법을 강조하는데 1. 데이터를 프로그램의 인터페이스를 가지고 서술하는 것 -> 데이터를 사용하는 방법을 말하는 인터페이스를 구현하는 클래스를 설계 -> private 멤버 변수들이 정보를 저장 [데이터 은닉] -> public 멤버 함수가 유일한 데이터 접근 [메서드] -> 클래스는 이 데이터와 메서드를 하나의 패키지로 결합 2. 클래스의 설계 -> 클래스 선언을 두 부분으로 나누어 독립된 파일에 저장 -> 헤더 파일: 클래스 선언 -> 소스파일 : 멤버 함수의 정의 즉 , 인터페이스와 세부 구현의 분리 따라서 클래스를 사용하기 위해서는 public 인터페이스만 있으면 된다. [세부적인 구현에 사용자 프로그램의 종속을 막는다] 3. 사용자 정의 데이터형인 클래스와 ..
[C++] 10장-7. 추상화 데이터형 ADT[추상화 데이터형]의 구현 :언어나 시스템의 세부적인것을 따지지 않고, 데이터형을 일반적인 형식으로 서술 Stack의 구현 : 여러 개의 항목을 저장 [컨테이너] 빈 스텍 생성가능 스텍의 꼭대기에 항목추가 [push] 스텍의 꼭대기에 항목삭제 [pop] 스텍이 가득 차있는지 검사 스텍이 비어있는지 검사 public 멤버 함수: 인터페이스를 제공하는 클래스와 대응 private 데이터 멤버: 스텍 데이터의 저장 private 부분의 데이터 저장 방법 선택[배열, 동적배열, 링크드 리스트 등] public 부분에서는 알 수 없다. //stack.h #ifndef STACK_H_ #define STACK_H_ typedef unsigned long Item; class Stack { private: en..
[C++] 10장-5. 객체 배열 객체배열 : 같은 클래스에 속하는 여러개의 객체의 배열 -> 표준 데이터형의 배열을 선언하는 것과 동일한 방법 Stock mystuff[4]; //4개의 Stock 객체로 이루어진 배열 생성 명시적으로 초기화되지 않은 클래스 객체를 생성할 때, 프로그램은 항상 디폴트 클래스 생성자를 호출한다. [생성자를 정의하지 않았거나(이경우 암시적 디폴트생성자가 생성), 하나의 명시적인 디폴트 생성자를 정의가 필요하다] mystuff[0].update(); //제 1 원소에 update()를 적용 mystuff[3].show(); //제 4원소에 show()를 적용 const Stock* tops=mystuff[2].topval(mystuff[1]); //제 3원소와 제2원소를 비교해 보다 높은 수준의 전체값에 맞춘..
[C++] 10장-4. this 포인터 Stock 클래스 선언은 프로그램이 total_val에 직접 접근 할 수 없기 때문에, 데이터를 분석할 수 없다. 프로그램이 저장된 데이터에 대해 인지하게 하는 방법은 값을 리턴하는 메서드를 제공하는 것이다. [이런 경우 보통 인라인 코드를 사용한다.] class Stock { private: ... double total_val; ... public: double total() const {return total_val;} ... }; -> 프로그램이 데이터에 직접 접근을 가능하게 total_val을 읽기 전용 메모리로 만든다. 즉 total_val 메서드를 사용할 수 있다. 그 클래스는 total_val값을 구체적으로 재설정하는 메서드를 제공하지 않는다. -> buy(), sell(), update(..
[C++] 10장-3. 클래스 생성자와 파괴자 목적: 클래스 객체를 표준 데이터형 사용하듯이 사용 int year = 2001; //적법한 초기화 struct thing { char* pn; int m; }; thing amabob = {"wodget", -23}; //적법한 초기화 Stock hot={"Sukie's Autos, Inc.", 200, 50.25; //컴파일 에러 -> Stock형에 일반적인 초기화 문법 적용이 안된다. -> private접근제어로 직접 접근 불가능 [멤버 함수를 이용해야 한다.] 클래스 생성자 :객체를 성공적으로 초기화 하기 위한 멤버 함수 즉, 새로운 객체를 생성하고 그들의 데이터 멤버에 값을 대입해주는 역할을 수행 생성자의 이름 = 클래스의 이름 생성자는 리턴값이 없지만 void로 선언하지도 않는다 생성자는 데이..
[C++] 10장-2. 추상화와 클래스 클래스와 클래스 메서드 정의 //stock00.h //version 00 #ifndef STOCCK00_H_ //전처리 지시자 #define에 정의되어 있지 않은 경우에만, #define STOCK00_H_ // #ifndef와 #endif 사이에 있는 구문을 처리 #include class Stock { private: std::string company; long shares; double share_val; double total_val; void set_tot() { total_val = shares * share_val; } public: void acquire(const std::string& co, long n, double pr); void buy(long num, double price)..

반응형