반응형

캡슐화 30

25. 캡슐화 최종 실습 - 테스트 코드 작성

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 캡슐화 최종 실습 내용을 잘 작성했는지 확인하는 테스트 코드를 작성해 보기로 해요. 이제 시나리오를 보면서 테스트 코드를 작성하세요. 많은 곳에서 구현한 후에 테스트를 수행합니다. 그리고 테스트 코드도 테스트를 수행하기 바로 전에 작성하죠. 하지만 소프트웨어 테스트는 많은 신경을 써도 충분하지 않아 배포 후에 버그를 발견할 때도 많습니다. 소프트웨어 개발에서 잘못 작성한 것은 빨리 발견할수록 전체 비용을 줄어듭니다. 이러한 이유로 많은 연구에서 설계가 끝나면 구현 작업과 함께 시작할 것을 권하고 있습니다. 그리고 구현한 것을 빠르게 테스트를 할 수 있게 원하는 결과가 나왔는지 빠르게 판단할 수 있는 다양한 기법을 사용하고 있습니다. 여기에서는 테스트를 빠르게..

24. 캡슐화 최종 실습 - 멤버 메서드

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 캡슐화 최종 실습 중에 멤버 메서드를 결정하세요. 여러분께서는 앞의 시나리오를 먼저 확인하여 멤버 필드를 결정한 후에 비교하세요. 이제 시나리오를 보면서 멤버 메서드를 결정하세요. 여기에서는 메서드 이름과 입력 매개 변수 리스트 및 반환 형식까지 결정하세요. 메서드 내부를 구체적으로 결정하는 부분은 테스트 코드 작성 후에 맨 마지막에 할 거예요. 먼저 혼자 해 본 후에 비교해 보세요. 먼저 다른 형식에서 접근 가능하게 접근 지정자 public:을 명시하세요. public: 생성할 때 이름을 입력받으므로 이를 반영하여 생성자 메서드를 결정하세요. Student(string name);//생성자 "공부하다.", "강의받다.", "잠자다.", "휴식하다.", "음..

23. 캡슐화 최종 실습 - 멤버 필드

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 캡슐화 최종 실습 중에 멤버 필드를 결정해 보아요. 여러분께서는 앞의 시나리오를 먼저 확인하여 멤버 필드를 결정한 후에 비교해 보세요. 먼저 클래스 이름은 Student로 정할게요. 주민 번호는 변하지 않으므로 상수화 멤버 필드로 정의하세요. const int pn;//주민번호 주민 번호를 순차적으로 부여하기 위해 정적 멤버 필드로 가장 최근에 부여한 주민 번호가 필요하겠죠. static int last_pn;//가장 최근에 부여한 주민 번호 이름은 문자열로 정하면 되겠죠. string name;//이름 지력과 체력, 스트레스, 연속으로 공부한 횟수는 정수 형식으로 정의하면 되겠네요. int iq;//지력 int hp;//체력 int stress;//스트레스..

22. 캡슐화 최종 실습 - 시나리오

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 캡슐화에서 다룬 내용을 이용하는 최종 실습을 해 보아요. 먼저 시나리오를 살펴보세요. 이번에는 단계별로 캡슐화를 실습해 보기로 해요. 여러분께서는 각 단계별로 먼저 직접 해 본 후에 비교하시기 바랍니다. 여기에서는 다음의 시나리오를 캡슐화 실습할 거예요. 다음 내용처럼 학생 데이터를 정의하시오. 1. 멤버 필드 주민번호: 순차적 부여 이름: 생성 시 전달 지력:100(최소 0, 최대 200) 체력: 100 (최소 0, 최대 200) 스트레스: 0 (최소 0, 최대 100) 연속으로 공부한 횟수: 0 (0,5), 공부를 하면 1 증가, 그 외의 행위를 하면 0으로 리셋, scnt로 부름 2. 명령할 수 있는 메서드(접근 지정이 public) 공부하다(체력 5소..

21. 캡슐화 실습2 - 학생

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 시나리오를 클래스 다이어그램으로 변환한 후에 학생 클래스를 정의하는 캡슐화 실습을 해 보아요. 이번 실습은 학생 클래스를 캡슐화하는 실습입니다. 이번에는 시나리오를 보고 클래스 다이어그램을 작성한 후에 이를 구현해 보기로 해요. 1. 시나리오 학생은 생성할 때 학생 이름을 전달받습니다. 그리고 학생 번호는 순차적으로 부여합니다. 이 외에 학생의 국어, 영어, 수학 성적을 -1로 설정합니다. 학생을 생성한 후에는 학생의 국어, 영어, 수학 성적을 입력할 수 있습니다. 만약 학생 성적이 0에서 100을 벗어나면 -1로 설정합니다. 학생 이름과 번호, 각 과목의 성적과 총점 및 평균을 확인할 수 있습니다. 그리고 전체 학생 수를 확인할 수 있습니다. 그리고 학생 ..

20. 캡슐화 실습1 - 복소수

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 클래스 다이어그램을 보면서 복소수 클래스를 정의하는 캡슐화 실습을 해 보아요. 캡슐화 실습을 해 보기로 해요. 이번에는 복소수 클래스 캡슐화예요. OOP 프로그래밍 할 때 구현 이전의 작업과 이후의 많은 작업을 CASE 도구로 UML로 표현할 때가 많아요. CASE 도구에는 Rose, Together, StarUML 등이 있습니다. 이 책에서는 CASE 도구를 사용하는 방법을 구체적으로 다루지는 않지만 많은 곳에서 UML로 작성한 다이어그램으로 실습할 내용 등을 소개할 거예요. UML로 클래스를 표현할 때는 세 칸으로 구성한 사각형으로 나타내요. 맨 위는 클래스 이름, 두 번째는 멤버 필드, 마지막 칸은 멤버 메서드를 표현합니다. 멤버 앞에 +(public)..

15. 접근 지정자

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 캡슐화에 관한 문법 중에 멤버의 가시성을 설정하는 접근 지정자를 살펴보아요. 이번에는 멤버의 가시성을 설정하는 접근 지정자에 관해 알아볼게요. C언어의 구조체는 모든 곳에서 모든 멤버를 접근할 수 있어요. 이러한 특징은 개발자가 멤버에 접근하기 쉬워서 구현하기 쉽게 생각할 수 있지만 시나리오에 맞게 데이터를 유지하는 것은 어려울 수 있어요. 예를 들어 설명할게요. 프로그램에서 이름, 번호, 아이큐를 멤버로 갖는 학생 형식이 있다고 가정합시다. 학생 개체는 생성할 때 이름과 번호를 부여하고 아이큐는 100으로 설정하기로 해요. 그리고 학생이 공부하면 아이큐가 공부한 시간만큼 증가하게 만들거예요. 단 아이큐는 300을 넘지 않게 하기로 해요. 그런데 학생 개체를..

14. 캡슐화 개요

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 OOP의 특징 중에 첫 번째로 캡슐화에 대해 간략하게 알아보기로 해요. 이제 C++언어에서 캡슐화에 관한 사항을 알아보기로 해요. 캡슐화는 여러 개의 멤버를 하나의 형식으로 묶는 과정을 말합니다. C언어에서는 구조체를 이용하여 캡슐화를 했었죠. C++언어에서도 구조체를 이용하여 캡슐화를 할 수 있습니다. 하지만 일반적으로 클래스를 이용하여 캡슐화를 할 때가 대부분입니다. 먼저 C언어에서의 캡슐화와 C++언어에서의 캡슐화의 차이를 간단하게 알아볼게요. C언어에서 구조체에는 데이터만 멤버 필드(멤버 변수)로 캡슐화할 수 있었죠. 하지만 C++에서는 기능도 멤버 메서드로 캡슐화를 할 수 있습니다. 그리고 C언어에서는 캡슐화한 멤버를 모든 곳에서 접근할 수 있지만 ..

13. OOP 개요

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 C++ 언어의 주요한 특징인 OOP(Object Oriented Programming, 개체(객체)지향 프로그래밍)에 관해 간략히 알아보기로 해요. 이제 C++언어가 갖는 주요 특징인 OOP(Object Oriented Programming, 개체(객체) 지향 프로그래밍)에 관한 사항을 다루기 시작할게요. 특히 OOP에 관한 특징들은 클래스 문법을 통해 다룰거예요. OOP란 프로그램의 세계를 현실 세계를 반영하자는 것에서 출발했어요. 우리가 사는 현실 세계는 수 많은 생명체들이 메시지를 서로 주고 받으면 살아가고 있어요. 이처럼 프로그램도 개체들이 서로 메시지를 주고 받으며 동작하게 하자는 것이죠. 그런데 프로그램에서는 개체를 만들기 위해서는 먼저 형식 정의..

2. C++ 언어 소개 및 책의 기술 범위

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 C++언어 소개와 함께 책에서 다루는 내용을 소개할게요. C++ 강의를 시작하거나 C언어가 끝나갈 때에 많은 이들이 "C++이 뭐예요? ", "C++언어는 C와 뭐가 달라요?" 라는 질문을 하더군요. 처음 강의를 했던 때에는 "C언어는 절차식으로 작성하기 적합한 프로그래밍 언어이고 C++언어는 OOP(Object Oriented Programming, 개체(객체)지향 프로그래밍)에 적합한 언어야."라고 대답이나 "글쎄, 기본 문법은 비슷한데 클래스 문법이 있어서 실제 프로그래밍 방식은 많이 다루지." 등의 대답을 했던 것 같아요. 그리고 점점 강의를 하다 보니 지금은 "C++ is a c with class."라는 얘기를 먼저 해요. 이렇게 얘기를 하는 이유..

반응형