프로그래밍 공부

전문가를 위한 C++정리 73

카테고리 설명
  • 5. 객체를 이용한 디자인 객체 개념을 접목해서 더 좋은 디자인 개념을 배워보자. 단순히 객체를 이용하는 것과 객체지향 개념을 제대로 활용하는 것의 차이는 전체 프로그램 디자인에서 객체들이 어떤 관계를 갖게 만들어졌는가에 달려있다. 먼저 절차적 프로그래밍(C 언어 스타일) 에 대해 아주 간략히 알아보고, 그 다음으로 객체지향 프로그래밍(Object-Oriented Programming[OOP]) 에 대해 알아보자. 비록, 수년동안 객체를 이용해왔다고 하더라도, 객체지향 프로그램을 개발할 때 자주 부딛혔던 객체 간 관계의 서로 다른 형태를 다루어보고, 추상화 원칙이 객체 디자인에 어떻게 적용되는지도 알아보는 것이 좋은 경험을 선사할 것 이다. 객체지향 프로그래밍은 프로그램이 내부에서 어떻게 구동죄는지 생각..

  • 4.7 체스 프로그램 디자인하기 간단한 체스 프로그램을 대상으로 하여 C++프로그램을 체계적으로 디자인해보자. 전체 디자인 절차를 개괄적으로 이해하기 위해 우선 먼저 그대로 진행해보고 모르는 부분은 따로 찾아보는 것도 좋은 방법이다. 4.7.1 요구사항 디자인에 들어가기 전에 프로그램의 기능과 성능에 대해 요구되는 조건을 명확하게 정리하는 것이 중요하다. 이상적으로는 이런 요구 조건은 요구 사항 명세서라는 이름으로 문서화되어 있어야 한다. 체스 프로그램에 대한 요구 사항은 다음과 같다. ( 실제라면 더 자세하고 개수도 많을 것 이다.) 프로그램은 체스의 표준 룰을 지원한다. 프로그램은 두 명의 플레이어를 지원한다. 인공지능 컴퓨터 플레이어는 지원하지 않는다. 프로그램은 텍스트 기반 인터페이스를 지원한다...

  • 4.6 패턴과 테크닉을 이용한 디자인 C++언어를 배우는 것과 훌륭한 C++ 프로그래머가 되는 것은 매우 다른 일이다. 책상에 앉아서 C++표준을 읽고 모든 부분을 암기했다면 아마 누구보다도 C++를 잘 알게 될 것이다. 하지만, 다른사람의 코드를 보고, 자신이 직접 프로그램을 개발해보지 못했다면 좋은 프로그래머가 되기 어렵다. 왜냐하면 C++문법은 저수준에서 언어가 어떤 기능을 할 수 있는지 설명해주지만 각 기능이 어떤 방식으로 사용되어야 하는지 설명해주지 않기 떄문이다. C++언어를 사용하면서 경험을 쌓을수록, C++ 프로그래머는 언어의 기능을 사용하는데 있어 자신만의 방식을 구축하게 된다. C++커뮤니티에서도 큰 맥락에서 언어 활용 방식에 대해 표준적, 비표준적 방식을 구축해놓았다. 디자인 테크닉과..

  • 4.5.5 오픈 소스 라이브러리 코드 재사용에서 오픈 소스 라이브러리는 단연 인기 메뉴다. 오픈소스의 일반적인 의미는 모든 사람이 소스 코드를 볼 수 있도록 공개한다는 것이다. 모든 배포방식별로 오픈 소스의 법률적인 정의가 따로 있지만. 핵심은 오픈 소스 소프트웨어라면 모든 사람이 소스코드에 접근할 수 있게 해야 한다는 것이다. 오픈 소스는 라이브러리에만 국한하지 않는다. 리눅스 운영체제는 사실 가장 유명한 오픈소스 제품이다. 구글 크롬과 모질라 파이어폭스 브라우저도 유명한 오픈소스 제품이다. 4.5.5.1 오픈소스 운동 오픈소스 커뮤니티 안에서도 용어에 약간의 혼란이 있다. 첫 번째로 오픈 소스 운동에는 두 가지 경쟁 중인 이름이 있다. 리차드 스톨만과 GNU 프로젝트에서는 프리 소프트웨어(free s..

  • 4.5.4 서드파티 애플리케이션의 번들링 프로젝트 하나에 여러 애플리케이션이 포함될 때도 있다. 예를 들어 전자 상거래 솔루션이라면 웹서버가 프론트 엔드로 필요한데, 서드파티에서 개발한 웹 서버가 번들링될 수도 있다. 애플리케이션 번들링은 코드 재사용이 극단적으로 확장된 형태로 볼 수 있다. 애플리케이션을 번들링 할 때 고려해야할 사항은 사실 라이브러리와 크게 다르지 않다. 라이선스와 관련한 법률적 문제가 애플리케이션 번들링을 사용할지 말지 판단할 기준이 된다. 서드파티의 애플리케이션을 번들링하려 할 때는 지적 재산권 전문가에게 법률적 검토를 받는 것이 안전하다. 기술 지원 문제는 좀 더 복잡해진다. 고객이 번들링된 웹서버에서 문제를 제기했다면 웹 서버를 개발한 서드파티 벤더에게 연락해야 하는지 아니면 ..

  • 4.5.3 코드 재사용 전략 라이브러리, 프레임워크, 동료가 작성한 코드, 본인이 작성한 코드, 어느 경우든 코드를 재사용 할 때는 따라야 할 몇가지 원칙이 있다. 4.5.3.1 기능과 한계의 이해 사용할 코드가 어떤 기능을 제공하고 제약 사항은 무엇인지 시간을 들여서 잘 파악하는 것이 중요하다. 이때 가장 먼저 할 일은 관련 문서를 읽어보고 공개된 인터페이스와 API를 살펴보는 것이다. 이상적으로는 이것만으로 코드의 사용법을 이해하는 데 충분해야 하지만 그렇지 않으면 직접 소스코드를 뒤져보어야 한다. 만약 주변에 해당 코드를 이용해본 적이 있거나 관련 된 내부 동작 방식을 설명해줄 수 있는 사람이 있다면 도움을 구하는 것도 좋은 방법이다. 코드의 사용법을 익힐 떄는 가장 기본적인 것부터 이해하는 것이 ..