[0923] 객체지향설계 OOP 개념 대입하여 앱 분석하기
객체지향설계 (OOP 개념으로 분석해오기)
개념 6가지:
Class/상속/모듈화/정보은닉/인캡슐레이션/polymorphism(다형성)
1. 분석할 앱: 마인딩
2. 앱에 대한 소개:
요즘 사용하고 있는 모바일 어플리케이션으로, 여러 가지 기능 중에 중심만 설명하자면, 기본적으로 하루에 5번 기분이나 감정을 해시태그와 글로 적어서 기록하고 하루의 기분을 그래프로 한눈에 파악할 수 있는 일종의 자기계발 어플리케이션이다. 단순히 기록하는 것 외에도 명상 같은 부가 프로그램도 같이 진행할 수 있다.
3. 개념 6가지를 들어서 설명
[1] class
앱에는 여러 가지 기능이 있다.
크게 사용자가 하는 동작을 기준으로 클래스를 나누자면,
선택지에 의해 맞춤 코스를 짜주는 기능, 기록하여 그래프를 만들어주는 기능, 녹음된 오디오를 듣는 기능(명상 코스) 등이 있다. 이러한 기능들을 구현하기 위해 클래스들을 만들었을 것이다.
[2] 상속
앞서 말한 클래스들을 단순히 일일이 구현하려면 어려워 보였을 것 같다. 단순한 기록을 하는 것 외에도 다양한 코스가 있고, 기록을 하는 것도 각각의 주제가 있다. 그렇기 때문에 기본이 되는 하루 기분 기록하기에 동작에 대한 기본 클래스에 그래프 형성, 기록 저장 등의 기본 기능들을 넣고 이것을 상속하여 다른 주제의 기록 코스를 만들었을 것이다.
[3] 모듈화
어떻게 기능적으로 쪼개서 이 앱을 만들었을까 생각해보았다.
우선, 기록하는 기능중에서도 여러 가지 부가적 기능이 구현되어야 하기 때문에, 크게 보면 ‘기록’ 기능을 안내 문구가 들어갈 화면, 그리고 코스별 수행 타이머 기능 구현, 기록하고 저장하는 기능 구현, 해시태그를 불러와서 선택된 것을 저장하는 기능을 구현하여 ‘기록하기’라는 하나의 기능을 구현했을 것이다.
[4] 정보은닉
많은 정보를 노출시킨다고 해서 좋을것이 없다.
이 앱은 많은 사용자들이 사용하는 앱으로써, 가입을 하여 서버에 고객의 정보가 저장되는 형식으로 정보 저장과 열람이 이뤄진다. 그렇기 때문에 정보가 어떻게 서버에 저장되고 어떻게 불러와지는지에 대한 것은 은닉해두는 것이 좋다고 생각하고, 그렇게 설계를 했을 것이라고 예상된다. 자신의 생각과 느낌을 적은 글로 일종의 개인정보가 될 수 있기 때문에.
[5] 인캡슐레이션
필요한 class만 남기고 나머지 정보의 일부는 개방할 수 있는 인캡슐레이션에 대해서 생각해보았다. 이 앱에서는 코스에 대한 정보는 개방되어야 하므로 코스에 대한 class 정보를 보여주지만, 그 안에 있는 기록하기 기능에 대한 정보 저장 경로나 방법, 불러오는 방법이 있는 함수나 클래스는 가려두도록 했을 것이다.
[6] 다형성
여러 가지 형태를 가질 수 있는 능력을 의미한다.
자바에서는 한 타입의 참조변수로 여러타입의 객체를 참조할 수 있도록 함을 구현하는데 사용한다.
'Undergraduate Records' 카테고리의 다른 글
[학습튜터링] 네비게이션 바 외 CSS(background-image등) (0) | 2019.09.25 |
---|---|
[0925] OOP Concept 구체적으로 설명 :: Python 상속 기초 (0) | 2019.09.25 |
[0920] Object-Oriented Design Concepts (0) | 2019.09.20 |
[0917] 중국문화 사강/알고리즘 복습 (0) | 2019.09.18 |
[0916] 리눅스 명령어 (0) | 2019.09.16 |