모든자료는 한교수님시간에 나옴.
객체지향언어의 특징-캡슐화이다.
객체가 멤버에 접근할떄는 .이나,->를 쓰고 이를 직접참조연산자와. 간접참조연산자 라고 부른다.
#include <iostream>
using namespace std;
class Dog {
private:
int age;
double weight;
string name;
public:
int getAge() {
return age;
}
void setAge(int a) {
age = a;
}
double getWeight() {
return weight;
}
void setWeight(double w) {
weight = w;
}
string getName() {
return name;
}
void setName(string n) {
name = n;
}
};
int main()
{
Dog happy;
happy.setAge(3);
happy.setWeight(3.5);
happy.setName("해피");
cout << happy.getName() << "는 "
<< happy.getAge() << "살, "
<< happy.getWeight() << "kg입니다.\n";
return 0;
}
기말에 비슷한문제 1개나옴.
#include <iostream> // 입출력 스트림을 사용하기 위해 iostream 라이브러리를 포함합니다.
using namespace std; // std 네임스페이스를 사용하여 std::를 생략합니다.
class Dog { // Dog라는 클래스를 정의합니다.
private: // private 접근 제어자: 이 아래의 멤버 변수는 클래스 외부에서 접근할 수 없습니다.
int age; // 개의 나이를 저장할 정수형 멤버 변수 age
double weight; // 개의 체중을 저장할 실수형 멤버 변수 weight
string name; // 개의 이름을 저장할 문자열형 멤버 변수 name
public: // public 접근 제어자: 이 아래의 멤버 함수는 클래스 외부에서 접근할 수 있습니다.
// 나이를 반환하는 getter 함수
int getAge() {
return age; // age 값을 반환합니다.
}
// 나이를 설정하는 setter 함수
void setAge(int a) {
age = a; // 매개변수 a를 사용하여 age 값을 설정합니다.
}
// 체중을 반환하는 getter 함수
double getWeight() {
return weight; // weight 값을 반환합니다.
}
// 체중을 설정하는 setter 함수
void setWeight(double w) {
weight = w; // 매개변수 w를 사용하여 weight 값을 설정합니다.
}
// 이름을 반환하는 getter 함수
string getName() {
return name; // name 값을 반환합니다.
}
// 이름을 설정하는 setter 함수
void setName(string n) {
name = n; // 매개변수 n을 사용하여 name 값을 설정합니다.
}
};
int main() // 프로그램의 시작점인 main 함수입니다.
{
Dog happy; // Dog 클래스의 객체 happy를 생성합니다.
happy.setAge(3); // happy 객체의 나이를 3으로 설정합니다.
happy.setWeight(3.5); // happy 객체의 체중을 3.5kg으로 설정합니다.
happy.setName("해피"); // happy 객체의 이름을 "해피"로 설정합니다.
// happy 객체의 정보를 출력합니다.
cout << happy.getName() << "는 " // happy의 이름을 출력합니다.
<< happy.getAge() << "살, " // happy의 나이를 출력합니다.
<< happy.getWeight() << "kg입니다.\n"; // happy의 체중을 출력합니다.
return 0; // 프로그램이 정상적으로 종료됨을 나타냅니다.
}
(주석을 달아 설명해달라고 해보았다.)
2가지 다른점
문자열을 리턴할떄,문자를 리턴할떄 의 각 다른점
강아지 4마리 만들기 소스
생성자와 소멸자는 객체가 만들어질떄, 객체가 없어질떄 생성과 소멸을 담당하며, 그떄마다 생긴다
생성자,소멸자에 대해서 설명해달라고 해보았다.(생성,소멸자는 써도되고, 쓰지않아도 상관없다)
c,c++에서 초기화하는 방법이다.
초기에 private에서 age의 값을 초기화 했는데, 이건 좋은방법이 아니다.
생성자의 특징이다.
프로그래밍 언어에서implicitity가 들어가면 (자동)이라는 의미가 있다. 아무 의미가없는 생성자가 자동으로 만들어짐.
생성자는 내가 만들지만, 호출은 자동으로 행해진다.
초기화하는 3가지 방법.
3가지의 차이점
시험에 꼭나온다,(기말시험) 전통적인 초기화방법은 copy방식이고, 변수명-(값)을 쓴것은 직접초기화.{}중괄호는 uniform초기화 라고 한다. c언어좀 친다는 사람은 direct방식을 많이쓴다고한다. unifom은 이슈에 민감한 사람들이 많이쓰고 copy는 초보들이 많이쓴다고함.
+부가설명,
2번쨰방법을 많이쓴다(잘하는사람들)
이렇게 어려운거 안쓰려면 그냥 멤버변수로 포인터를 쓰지않으면된다.
객체가 소멸할떄 소멸자가 자동으로 호출되고 객체가 사라지면 소멸자도 없어진다.
this사용.
소스이해해야한다.
-------------------------------------------------------------------------------------------------------------------------------------------------------
#include <iostream>
using std::cout;
class Cat {
private:
int age;
public:
int getAge() {return age;}
void setAge(int a) {age = a;}
};
int main()
{
Cat ya;
ya.setAge(1);
cout << ya.getAge();
return 0;
}
1단계.
------------------------------------------------------------------------------------------------------------------------------------------------------
#include <iostream>
using std::cout;
class Cat {
private:
int age;
public:
Cat() {
age = 1;
}
int getAge() {return age;}
void setAge(int a) {age = a;}
};
int main()
{
Cat ya;
cout << ya.getAge() << std::endl;
ya.setAge(2);//초기화
cout << ya.getAge();
return 0;
}
2단계. 기초적은 생성자 만들기
------------------------------------------------------------------------------------------------------------------------------------
#include <iostream>
using std::cout;
class Cat {
private:
int age;
public:
Cat() {
age = 1;
}
~Cat() {cout << "야옹~~\n";}
int getAge() {return age;}
void setAge(int a) {age = a;}
};
int main()
{
Cat ya;
cout << ya.getAge() << std::endl;
ya.setAge(2);//초기화
cout << ya.getAge() << std::endl;
return 0;
}
3단계. 소멸자 만들기
---------------------------------------------------------------------------------------------------------------------------------------------------
#include <iostream>
using std::cout;
class Cat {
private:
int age;
public:
Cat(int a) {
age = a;
}
~Cat() {cout << "야옹~~\n";}
int getAge() {return age;}
void setAge(int a) {age = a;}
};
int main()
{
Cat ya(1);
cout << ya.getAge() << std::endl;
ya.setAge(2);//초기화
cout << ya.getAge() << std::endl;
return 0;
}
4단계.생성자에 매개변수가 필요하고, 밑에Cat ya 뒤에 괄호() 가 필요하고, 괄호안에는 매개변수를 넣어줘야한다(임의의 값)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <iostream>
using std::cout;
class Cat {
private:
int age;
public:
Cat(int a) {this->age = a;}
~Cat() {cout << "야옹~~\n";}
int getAge() {return age;}
void setAge(int age) {this->age = age;}
};
int main()
{
Cat ya(1);
cout << ya.getAge() << std::endl;
ya.setAge(2);//초기화
cout << ya.getAge() << std::endl;
return 0;
}
5단계.this사용
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <iostream>
using std::cout;
class Cat {
private:
int age;
std::string name;
public:
Cat(int a) {this->age = a;}
~Cat() {cout << "야옹~~\n";}
int getAge() {return age;}
void setAge(int age) {this->age = age;}
std::string getName() { return name; }
void setName(std::string age) { this->name = name; }
};
int main()
{
Cat ya(1);
cout << ya.getAge() << std::endl;
ya.setAge(2);//초기화
cout << ya.getAge() << std::endl;
return 0;
}
6단계, 이름추가
_-----------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <iostream>
using std::cout;
class Cat {
private:
int age;
std::string name;
public:
Cat(std::string name, int age) {
this->age = age;
this->name = name;
}
~Cat() {cout << "야옹~~\n";}
int getAge() {return age;}
void setAge(int age) {this->age = age;}
std::string getName() { return name; }
void setName(std::string age) { this->name = name; }
};
int main()
{
Cat ya("야옹이",1);
cout <<ya.getName()<< ya.getAge() << std::endl;
ya.setAge(2);//초기화
cout <<ya.getName()<< ya.getAge() << std::endl;
return 0;
}
7단계 완성.
-------------------------------------------------------------------------------------------------------------------------------------------------------------