대학
-
Static array대학/자료구조 2022. 10. 16. 22:47
가장 기본적인 자료구조, 배열에 대해 공부해보자. 공부는 가상의 가방을 구현한다고 가정하고 진행 할 것이다. 단, 정적 배열은 너무 익숙한 방법이라 설명이 많지 않을 예정입니다... class bag { public: static const size_t CAPACITY = 20; ... private: int data[CAPACITY]; // member variable: data container size_t used; // member variable: counting data qty }; 기본적으로 정보를 저장할 data 배열이 있을 것이고, 배열의 기본 사이즈는 CAPACITY = 20으로 할당해준다. 가방의 사용량은 used로 측정할 것이다. 이제 가방에 필요한 기능을 구현 해볼건데, 먼저 가방..
-
c++ operator overloading대학/자료구조 2022. 10. 16. 22:19
기초 타입 변수의 경우 a + b 같은 연산자가 동작하는데 아무런 의심도 없이 사용했다. 하지만, 직접 정의한 클래스의 연산을 할 때, c1 + c2 같은 연산을 하면 에러가 발생한다. 이런 경우에 클래스에서 연산자 오버로딩 기법을 사용하면 된다. 설명을 위해서 이 포스팅에선 아래의 MyDoubleVector 클래스를 간단하게 정의하고 시작하겠다. class MyDoubleVector { public: ... private: double *data; // member variable: data container size_t max_capacity; // member variable: max qty of data size_t used; // member variable: counting data qty }..
-
c++ class, parameter types대학/자료구조 2022. 10. 16. 14:48
이번 포스트는 앞으로 자료구조 포스팅에서 사용할 c++ 기초 문법을 정리하고자 한다. (100% 커버는 못하고, 간단한 문법만 정리하고 나머지는 그 때 가서 정리하자) // rgb.h class RGB { public: // 생성자 RGB(char _red[] = (char *)"red", char _green[] = (char *)"green", char _blue[] = (char *)"blue"); // 파괴자 ~RGB(); void set_rgb(char _red[], char _green[], char _blue[]); char *&get_red(); char *&get_green(); char *&get_blue(); private: char *red; char *green; char *blu..
-
Pre, Postcondition대학/자료구조 2022. 10. 15. 12:11
자료구조와 크게 상관없는 이야기 같지만... 오늘 할 얘기는 함수 작성 시 가져야할 코딩 습관에 대한 이야기이다. 소프트웨어 개발의 단계를 세 단계로 요약하면 다음과 같이 흘러간다. Step 1 1. 요구 스펙 파악 2. 설계 3. 코드로 구현 Step 2 4. 만든 프로그램 분석 5. 테스팅 및 디버깅 6. 유지보수 Step 3 7. 필요가 없어질 시 삭제 개발 단계에서 기능의 구현은 외부 라이브러리를 가져다 쓰거나, 함수의 형태로 분할하여 만들게 되는데, 기능의 구현체는 하나의 공통점을 갖는다. 바로, 어떻게 구현되었는지는 몰라도 사용할 수는 있다는 점이다. 여기서 다음의 개념이 등장한다. Precondition Postcondition Pre, Postcondition을 하나의 주석문 쌍으로 작성하..
-
Git 정리대학/오픈소스소프트웨어 2022. 10. 13. 16:11
아래의 링크에 개별적으로 정리하였습니다. Git 특징 이 포스트와 사용된 사진은 아래의 책 내용을 기반으로 작성하였습니다. GitHub - progit/progit2-ko Contribute to progit/progit2-ko development by creating an account on GitHub. github.com 또한 크리에이.. with611.tistory.com Git 명령어 정리 - 파일관리 편 이 포스트와 사용된 사진은 아래의 책 내용을 기반으로 작성하였습니다. GitHub - progit/progit2-ko Contribute to progit/progit2-ko development by creating an account on GitHub. github.com 또한 크리에이...
-
오픈소스 라이센스대학/오픈소스소프트웨어 2022. 10. 13. 15:19
- 지적재산권 vs. 라이센스 지적재산권이 있는 소프트웨어는 저작권, 특허권, 상표권, 영업비밀 등 독점적으로 보호된다. 라이센스가 있는 소프트웨어는 개발자-사용자 간의 사용방법 및 조건의 범위를 명시하여 권리를 보호한다. - 오픈소스 소프트웨어의 조건 다음은 OSI에서 정의한 오픈소스의 정의이다. 1. 자유로운 재배포 2. 소스코드 공개 (난독화 금지) 3. 동일한 규정에 따라 2차 저작물의 배포 허용 4. 작성자 소스코드 보전 (원 저작자의 정보 삭제 금지) 5. 개인이나 단체에 대한 차별 금지 6. 사용 분야에 대한 제한 금지 7. 라이센스 전문을 배포 8. 라이센스 적용상의 동일성 유지 (특정 제품 의존 금지) 9. 다른 라이센스의 포괄적 수용 (특정 라이센스 제한 금지) 10. 라이센스의 기술적..
-
java 예외 처리대학/객체지향프로그래밍 2022. 10. 9. 17:45
예외가 발생하면, 프로그램은 더이상 동작의 의미가 없어지므로 kernel에서 프로세스를 종료시켜 버린다. 그런 예외의 타입은 크게 Error, Exception 두 개로 나뉜다. 1. Error 개발자가 처리할 수 없는 오류로 Stack Overflow, JVM 자원 부족 등이 이에 해당한다. 2. Exception 개발자가 처리할 수 있는 오류로 0으로 나누기, 배열 밖 인덱스 접근 등이 이에 해당한다. Exception는 또 검사형 예외, 비검사형 예외로 나뉜다. 1. 검사형 예외(일반 예외) 예외처리를 하지 않으면 컴파일 오류가 발생하는 예외로 예외처리 코드를 반드시 추가해 줘야 하고, 그렇지 않으면 컴파일 조차 되지 않는다. 일반 예외 발생 이유 ClassNotFoundException 존재하지 ..
-
java 인터페이스대학/객체지향프로그래밍 2022. 10. 9. 16:54
interface Car { int wheels = 4; void start(); void stop(); default void newFeature(int n) { print(n); } private void print(int n) { for (int i = 0; i < n; i++) { System.out.println("This is new feature"); } } } interface Color { void setColor(String s); String getColor(); static void info() { System.out.println("Color interface info"); } } class Bmw implements Car, Color { private String color; ..