Programming II52 [전문가를 위한 C++] CHAPTER9 클래스와 객체 완전 정복 9.1 프렌드- c++는 클래스 안에서 다른 클래스, 다른 클래스의 멤버 함수 또는 비 멤버 함수를 프렌드로 선언하는 기능을 제공한다. 프렌드로 선언한 대상은 이 클래스의 protected나 private 데이터 멤버와 메서드에 접근할 수 있습니다.- 특정한 메서드만 프렌드로 만들 수도 있다.- 프렌드로 지정할 클래스, 메서드, 함수는 반드시 접근을 허용할 클래스에서 지정해야 한다. 이들을 대상 클래스가 아닌 다른 곳에서 프렌드라고 선언해서 그 클래스의 private이나 protected 멤버에 접근하게 할 수는 없다.- 클래스나 메서드를 프렌드로 지정하는 기능을 남용하지 않도록 주의한다. 프렌드 기능은 클래스 내부를 다른 클래스나 함수에 드러내기 때문에 캡슐화 원칙에 위배될 수 있다. 따라서 꼭 필요한.. 2025. 4. 10. [전문가를 위한 C++] CHAPTER8 클래스와 객체 이해 ⁃ 객체지향 언어인 c++는 객체를 정의하거나 사용할 수 있도록 클래스를 제공한다.8.1 스프레드시트 예제8.2 클래스 작성 방법⁃ 클래스를 작성하려면 그 클래스의 모든 객체에 대한 동작(메서드)과 각 객체의 속성(데이터 멤버)를 지정한다.8.2.1 클래스 정의⁃ 클래스 정의는 항상 class 키워드와 클래스 이름으로 시작한다. - c++에서 클래스 정의는 일종의 선언문이므로 반드시 끝에 세미콜론을 붙인다. ⁃ 클래스를 모듈로 정의했고 그 모듈을 임포트하는 클라이언트가 그 클래스를 볼 수 있게 하려면 class 키워드 앞에 export를 붙인다. + 1. 클래스 멤버 ⁃ 클래스는 멤버를 가질 수 있다. 멤버는 메서드, 생성자, 소멸자와 같은 함수(멤버 함수)일 수도 있고, 열거형, 타입 엘리어스, .. 2025. 4. 9. [전문가를 위한 C++] CHAPTER7 메모리 관리 - C++는 언어 자체가 굉장히 유연하고 안전성보다는 성능을 추구하기 때문에 심각한 문제가 발생할 가능성도 높다. - 메모리 할당과 관리는 C++ 프로그래밍에서 특히 문제가 발생하기 쉬운 영역이다. 따라서 메모리 관리의 내부 작동 방식을 확실히 이해하고 있어야 한다.- 모던 C++코드에서는 로우레벨 메모리 연산은 가급적 피하고 컨테이너나 스마트 포인터와 같은 최신 기능을 활용하는 추세다 7.1 동적 메모리 다루기7.1.1 메모리의 작동 과정 살펴보기int i { 7 };- 로컬 변수 i를 자동 변수라고 부르며 스택에 저장된다. - 프로그램의 실행 흐름이 이 변수가 선언된 스코프(유효 범위)를 벗어나면 할당된 메모리가 자동으로 해제된다. - new 키워드를 사용하면 프리스토어(자유 공간)에 메모.. 2025. 4. 5. [전문가를 위한 C++] CHAPTER6 재사용을 고려한 설계 6.1 재사용 철학- 코드는 반드시 작성자나 다른 프로그래머가 재사용할 수 있게 설계해야 한다.작성은 한 번, 사용은 여러 번무슨 수를 쓰더라도 코드 중복은 피한다.같은 일을 반복하지 않는다(DRY - Don't Repeat Yourself).- 이에 대한 근거는 다음과 같다.코드를 한 프로그램에서만 사용하는 경우는 극히 드물다.재사용할 수 있게 설계하면 시간과 비용을 절약할 수 있다.팀 내 다른 프로그래머도 활용할 수 있도록 작성한다. 재사용을 고려한 설계를 협력 코딩이라고도 부른다.재사용성이 낮으면 코드 중복이 늘어난다.재사용하기 좋은 코드의 첫 번째 수혜자는 바로 작성자 자신이다.- 회사 소속으로 설계하고 작성한 코드의 지적재산권은 일반적으로 회사에 귀속된다. 퇴직 후에도 그 코드를 계속 보유하면 .. 2025. 4. 5. [전문가를 위한 C++] CHAPTER5 객체지향 설계 5.1 절차형 사고방식- C와 같은 절차형 언어는 단 하나의 작업만 담당하는 프로시저라 부르는 작은 단위로 코드를 구성한다. - 프로시저는 프로그래머가 코드를 읽고 관리하기 쉽도록 추상화한 것이다. 프로시저는 프로그램이 하는 일을 중심으로 만든 개념이다.- 절차형 접근 방식은 일정한 단계에 따라 진행하는 프로그램에 적합하다. - 절차지향 프로그래밍(Procedural Programming)은 프로그램을 순차적인 절차(절차, 함수, 루틴)로 구성하여 실행하는 프로그래밍 패러다임이다. 프로그램의 흐름이 위에서 아래로 자연스럽게 진행되며, 데이터를 함수(절차)들이 처리하는 방식으로 동작한다.5.2 객체지향 철학- 절차형 접근 방식은 프로그램이 하는 일을 중심으로 접근하는데 반해 객체지향 접근 방식은 모델링.. 2025. 4. 2. [전문가를 위한 C++] CHAPTER4 전문가답게 C++프로그램 설계하기 4.1 프로그램 설계의 정의- 프로젝트를 새로 시작하거나 기존 프로그램에 기능을 추가하는 작업에 들어가기 전에 가장 먼저 할 일은 요구사항을 분석하는 것이다. 그러기 위해서는 이해 당사자와 함께 논의해야 한다. - 요구사항 분석 단계의 핵심 결과물은 기능 요구사항 문서다. 이 문서는 작성할 코드가 정확히 할 일만 표현하고, 이를 달성하는 방법은 생략한다. 또한 이 단계에서 최종 시스템의 동작이 아닌 속성을 표현하는 비기능 요구사항 문서도 나올 수 있다. - 요구사항을 모두 수집했다면 프로그램 설계 단계로 넘어갈 수 있다. 프로그램 설계(또는 소프트웨어 설계)란 앞 단계에서 도출한 (기능 및 비기능) 요구사항을 모두 만족하는 프로그램을 구현하기 위한 명세서다. 쉽게말해 설계란 프로그램의 구현 계획을 정.. 2025. 4. 2. 이전 1 2 3 4 5 6 ··· 9 다음