#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>

using namespace std;

class Person {
protected:
    int height;
    int weight;

    string gender;
    string personality;
    string dream;
public:
    Person() {}
    Person(int h, int w, string g) : height(h), weight(w), gender(g) {

    }

    void makePersonality(string personality) {
        this->personality = personality;

        cout << "내성격은" << this->personality << endl;
    }

    void makeDream(string dream) {
        this->dream = dream;

        cout << "내 꿈은" << this->dream << endl;
    }
    void showPerson() {
        cout << "안녕하세요! 저의 성별은" << gender << "이구요!" << endl;
        cout << "저의 키는 " << height << " ,저의 몸무게는" << weight << "입니다" << endl;
    }

};


class myClass : public Person {
private:
    char name[20];
    string music;

public:

    myClass() {};
    myClass(int h, int w, string g, const char* name) : Person(h, w, g) {
        strcpy(this->name, name);
    }
    void favoriteMusic(string music) {
        cout << "좋아하는 음악은 " << music << "입니다." << endl;
    }
    void showMyname() {
        cout << "제 이름은 " << name << "입니다." << endl;
    }
};

int main() {
    myClass hm(175, 67, "남자", "조현민");
    hm.showPerson();
    hm.showMyname();
    hm.makeDream(" 게임 개발자입니다.");
    hm.makePersonality(" 긍정적입니다.");
    hm.favoriteMusic("힙합");

}

'스터디 관련' 카테고리의 다른 글

CS스터디 02회차, ~06월 09일(목)  (0) 2022.06.09
CS스터디 01회차, ~06월 02일(목)  (0) 2022.06.02
2/3(수) 과제  (0) 2021.02.03
1/6일 스터디 과제  (0) 2021.01.06
소프트웨어 생명주기 6단계  (0) 2020.12.30

소프트웨어 개발은 어떻게 진행해야할까?

 

내가 처음 프로그램을 만들때는, 책에서 본것과 구글링을 하며, 소스코드를 짜는데 급급했다. 물론, 정말 단순한 프로그램이고, 코드의 길이도 얼마 되지 않았기에 상관은 없었지만, 나중에 대형 프로그램을 기획.개발할때는 문제가 생길것이다.

 

소프트웨어 생명주기

소프트웨어를 개발하거나 기획할 때, 소프트웨어 생명주기라는 방식을 사용하면 더 안정적이고 좋은 품질의 프로그램을 만들 수 있다.

1단계. 요구 분석 단계

문제에서 요구하는 내용을 분석하는 단계로, 개발할 소프트 웨어의 기능과, 제약 조건, 목표 등을 명확히 한다. 개발할 소프트웨어의 성격을 이해하고 개발 방법과 필요한 자원이나 예산을 측정한다.

 

2단계. 시스템 명세 단계

시스템이 어떻게 동작하는지 정의하는 단계로, 입력 자료나 처리 내용, 생성되는 출력이 무엇인지 정의하는 단계이다.

 

3단계. 설계 단계

2단계(명세 단계)에서 정의한 기능을 실제로 수행하기 위한 방법을 논리적으로 결정하는 단계이다.

  1. 시스템 구조 설계           //시스템을 구성하는 내부 프로그램이나 모듈 간의 관계와 구조를 설계한다.
  2. 프로그램 설계              //프로그램 내의 각 모듈에서의 처리절차나 알고리즘을 설계한다.
  3. 사용자 인터페이스 설계 //시스템을 사용하는 사용자에게 보여지는 프로그램을 설계한다.

 

 

 

4단계. 구현 단계

프로그래밍 언어를 사용하여 실제로 프로그램을 작성하는 단계이다.

  1. 구조화 프로그래밍 //지정문, 조건문, 반복문만 사용하여 3가지 제어 구조로 표현한다.
  2. 모듈러 프로그래밍 //프로그램을 여러개의 작은 모듈로 나누어 계층 관계를 갖도록 구성한다.

 

5단계. 테스트 단계

개발한 프로그램을 테스트하는 단계이다.

  1. 단위 테스트 //시스템의 최소 구성 요소가 되는 모듈에 대해서 개별적으로 실행한다.
  2. 통합 테스트 //단위 테스트를 통과한 모듈을 연결하여 전체 시스템으로 완성하여 통합적으로 시행되는 테스트이다.
  3. 인수 테스트 //완성된 시스템을 인수하기 위해서 실제 자료를 사용한 최종 테스트이다.

6단계. 유지보수 단계

사람에 따라서, 5단계와 6단계를 같이 묶어서 이야기하는 사람도 있다. 시스템이 인수되고 설치된 후에 일어나는 단계이다. 또한 소프트웨어 생명 주기중 가장 긴 단계이기도 하다.

  1. 수정형 유지보수 //사용중에 발견한 프로그램의 오류 수정 작업이다.
  2. 적응형 유지보수 //시스템과 관련한 환경적 변화에 적응하기 위한 재조정 작업이다.
  3. 완전형 유지보수 //시스템의 성능을 향상시키기 위한 개선 작업이다.
  4. 예방형 유지보수 //앞으로 발생할지 모를 변경사항을 수용하기 위한 대비 작업이다.

 

스터디 과제로 나온 주제는 '상속을 이용하여 최소 네개 이상의 클래스를 만들기'였다. 

  • 소프트웨어의 기능: 자유 주제
  •  
  • 제약조건: 상속이 포함되어야 함, 클래스가 네개 이상이어야함.
  • 목표: 상속을 이용하여 네개 이상의 클래스를 만들고, 통합했을때 실행 가능해야함.
  • 개발 방법: 상위 클래스 하나-조원이 모두 모여서, 하위 클래스- 각각 하나씩

 

'스터디 관련' 카테고리의 다른 글

CS스터디 02회차, ~06월 09일(목)  (0) 2022.06.09
CS스터디 01회차, ~06월 02일(목)  (0) 2022.06.02
2/3(수) 과제  (0) 2021.02.03
1/6일 스터디 과제  (0) 2021.01.06
이번 스터디 과제,,  (0) 2020.12.31

+ Recent posts