분류 전체보기 243

[C++] 멤버 메서드의 활용

멤버 메서드의 활용 멤버 메서드는 선언과 정의를 분리하는 것이 좋음 함수 내에서 다른 함수를 참조 하는 것처럼 멤버 메서드 내에서 다른 메서드를 참조할 수 있기 때문 #include using namespace std; class Vector2 { public: // Vector2() : x(0), y(0) {} Vector2(); // Vector2(float x, float y) : x(x), y(y) {} Vector2(float x, float y); // get함수는 const로 선언하는 것이 좋음 // float GetX() const { return x; } float GetX() const; // float GetY() const { return y; } float GetY() const;..

[C++] 상수형 매개변수와 상수형 메서드

상수형 매개변수와 상수형 메서드 const의 쓰임새 매개변수의 상수화 (모든 함수에서) 메서드의 상수화 (클래스에서 멤버 메서드) 실수 방지에 유용 ex) 은행 계좌 Class #include using namespace std; class Account { public: Account() : money(0) {} Account(int money) : money(money) {} void Deposit(const int d) { // 매개변수 d는 절대 변하면 안되기 때문에 const를 사용한다. // d = money; // 실수(버그) --> const를 사용해서 에러 호출 money += d; cout

[C++] 클래스(Class) (2) - 정적 멤버, 정적 메서드

클래스(Class) (2) - 정적 멤버 정적 멤버 정적 멤버 : 틀에 해당하는 멤버(붕어빵 틀) 동적 멤버 : 객체에 포함되는 멤버. 붕어빵마다 팥의 양이 조금씩 다른 것이 해당 ex) RGB 색상 정보를 저장하는 클래스 #include using namespace std; // 0~1 float R G B class Color { public: Color() : r(0), g(0), b(0) {} Color(float r, float g, float b) : r(r), g(g), b(b) {} float GetR() { return r; } float GetG() { return g; } float GetB() { return b; } private: float r; float g; float b; ..

[C++] 클래스(Class) (1)

클래스(Class) (1) 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀 자료를 저장하고 자료를 처리할 수 있음 특정한 용도를 수행하기 위한 변수와 함수를 모아 둔 틀 int a, b, c에서 int가 틀이라면 a, b, c 는 틀을 이용하여 찍어낸 변수(객체) 객체(오브젝트) : 틀을 이용하여 찍어낸 개체(변수, 메모리 상의 공간) 접근제어 지시자(access modifier) 객체지향 프로그래밍 언어에서 클래스의 멤버(필드, 메서드)에 대한 접근 권한을 제어하기 위해 사용되는 키워드나 지시자 래스의 내부 구조를 보호하고, 데이터 은닉(data encapsulation)을 지원하여 클래스의 캡슐화를 강화(캡슐화 : 외부에서 접근을 제한하고 내부의 상세 구현을 숨김) private / p..

[C++] 네임스페이스(namespace)

네임스페이스(namespace) 네임스페이스(namespace)는 프로그래밍에서 식별자(identifier)들의 범위를 나타내는 개념 변수, 함수, 클래스 등과 같은 여러 종류의 식별자들이 유일한 이름을 가지고 충돌하지 않도록 하는 데 사용 네임스페이스 프로토 타입 int n; // global variable void set(); // 프로토타입 namespace junseo { // 프로토타입 int n; void set(); } // namespace junseo namespace google { // 프로토타입 int n; void set(); } // namespace google 전역(global) 식별자와 네임스페이스에 속한 식별자 표기 void EX1(void) { ::set(); // g..

[C++] C++ 스타일 함수

C++ 스타일 함수 함수 오버로딩 over load : 다중 정의 함수 오버로딩 : 함수 매개변수의 형을 분석해서 알맞는 함수를 실행시킴 #include // using namespace std; // std namespace 안에 swap함수가 존재해서 사용 x void swap(int &a, int &b) { int tmp = a; a = b; b = tmp; } void swapd(double &a, double &b) { double tmp = a; a = b; b = tmp; } 이런식으로 swap 함수와 swapd 함수를 따로 생성하지 않고 아래처럼 다중 정의할 수 있다.(overload) #include // using namespace std; // std namespace 안에 swap함..

[Java] 02. 자바로 프로그램 작성하기

자바로 프로그램 작성하기 "Hello, world." 출력하기 코드 class Hello { public static void main(String[] args) { System.out.println("Hello, world."); // 화면에 글자를 출력 } } 위 코드를 editor를 통해 작성한 다음 Hello.java로 저장 (이 때, class의 이름 'Hello'가 대소문자까지 정확히 같아야 함) 자바 컴파일러를 통해 소소 코드(Hello.java)로 부터 클래스파일(Hello.class)를 생성 자바 인터프리터로 실행(java.exe) > javac Hello.java > java Hello Hello, world.java 코드 설명 class 클래스 이름 { /* 주석을 제외..

[Java] 01. 자바(Java Programming Language)

자바(Java Programming Language) 자바란? 썬 마이크로시스템즈에서 개발하여 1996년 발표한 객체지향 프로그래밍 언어 자바의 특징 운영체제(플랫폼)에 독립적이다 자봐로 작성된 프로그램은 운영체제의 종류에 관계없이 실행이 가능함 가비지 컬렉터(garbage collector)가 자동적으로 메모리를 관리해줌 프로그래머가 메모리를 따로 관리하지 않아도 된다. 네트워크와 분산처리, 멀티쓰레드, 동적 로딩(Dynamic Loading)을 지원 JVM(Java Virtual Machine) 일반적인 application의 코드는 OS를 거쳐 하드웨어로 전달 일반 application은 OS와 바로 맞붙어 있기 때문에 OS 종속적 다른 OS에서 실행시키기 위해서는 application을 해당 OS..

[자료구조] 스택의 응용 - 미로 탐색

스택(Stack)의 응용 - 미로 탐색 미로 탐색 문제 미로에 갇힌 주인공이 출구를 찾는 문제 미로가 서로 연결된 여러 개의 방 또는 칸으로 구성되어 있다고 가정 출구를 찾는 과정 기본적인 방법은 시행착오 방법으로서 하나의 경로를 선택하여 한 번 시도해보고 안되면 다시 다른 경로를 시도 이 때, 현재의 경로가 안 될 경우에 다른 경로를 선택해야 하므로 다른 경로들이 어딘가에 저장되어 있어야 함 현재 위치에서 가능한 경로 중에서 가장 가까운 경로를 저장해야 유리함 가장 최근에 저장한 경로가 쉽게 추출되도록 스택을 사용 현재 위치에서 갈 수 있는 방들의 좌표를 스택에 저장한 후 막다른 길을 만나면 아직 가보지 않은 방 중에서 가장 가까운 방으로 다시 돌아가서 새로운 경로를 찾는다 한 번 지니간 방을 다시 가..