자료 개념
자료(data)는 사전적 의미로 연구나 조사 등 어떤 일의 바탕이 되는 재료이다.
자료는 가공되지 않은 상태의 것을 뜻하기도 하며, 자료 그 자체로는 사용자에게
특정한 의미가 없다.
정보의 개념
정보(information)는 수집한 자료를 특정한 목적을 위하여 가공 처리하여
의사 결정이나 문제를 해결하는데 활용할 수 있도록 만든 결과물이나 지식을 의미한다.
*아래와 같은 과정을 거쳐 정보가 생성된다.
추상화 개념
추상화(abstraction)는 주어진 문제에서 특정한 목적과 관련된 필수저인 정보만을
추출하고 기타 정보는 감추는 과정이다.
또한, 공통적인 개념을 이용하여 같은 종류의 다양한 객체를 정의하는 것을
뜻하기도 한다.
예를 들어 동물에는 고양이, 강아지, 곰 등 무수히 다양한 동물이 있지만
"동물"이라는 추상화된 단어를 통하여 의미를 간결하게 전달할 수 있다.
추상화 기법은 소프트웨어 개발의 복잡성을 줄이기 위한 방법의 하나로 사용한다.
// 추상 탈것 클래스
abstract class Vehicle(val name: String) {
// 추상 함수 move를 정의합니다.
abstract fun move()
// 모든 탈것들이 공통적으로 가지고 있는 함수
fun ride() {
println("${name}에 탑승 합니다.")
}
}
// 기차 클래스
class Train : Vehicle("기차") {
override fun move() {
println("${name}이(가) 철길을 따라 이동합니다.")
}
}
// 자동차 클래스
class Car : Vehicle("자동차") {
override fun move() {
println("${name}이(가) 도로를 따라 주행합니다.")
}
}
// 오토바이 클래스
class Motorcycle : Vehicle("오토바이") {
override fun move() {
println("${name}이(가) 도로를 따라 질주합니다.")
}
}
코틀린으로 간단한 추상 클래스를 이용한 코드를 짜봤다.
fun main() {
val train = Train()
train.ride()
train.move()
val car = Car()
car.ride()
car.move()
val motorcycle = Motorcycle()
motorcycle.ride()
motorcycle.move()
}
이제 한번 실행시켜 보면
기차에 탑승 합니다.
기차이(가) 철길을 따라 이동합니다.
자동차에 탑승 합니다.
자동차이(가) 도로를 따라 주행합니다.
오토바이에 탑승 합니다.
오토바이이(가) 도로를 따라 질주합니다.
이런 결과가 출력된다.
이 코드를 보면 기차, 자동차, 오토바이의 공통점인
"탈것"이라는 것을 이용해 추상 클래스를 만들고
탈것들이 각각 다른 방식으로 이동하기 때문에 move()는 추상화 클래스
타는 과정은 다른 게 없기 때문에 ride()는 그냥 함수로 정의하였다.
여기서 각각 탈것들이 탈것을 상속받아 이동 방식을 move()를 override 하여
움직이는 방식을 정의하고 ride()는 다 똑같기 때문에 정의하지 않는다.
이제 train, car, motorcycle의 ride(), move() 함수를 호출해 보면
ride()는 이름 이외에는 별 다른 것이 없이 "~에 탑승합니다."라고
출력하고 move()는 위에서 정의한 데로 출력하는 것을 알 수 있다.
위 코드를 보면 알 수 있듯이 추상화를 사용했더니 중복되는 코드가 줄고
탈것의 공통적으로 필요한 기능이 생기면 "탈것" 추상 클래스에 한 번만
추가시키면 되니 새로운 기능을 추가하기 쉬워진 것도 알 수 있으며
중복되는 코드가 줄면서 코드가 간단해지며 복잡성이 감소하고 새로운 기능의
추가가 쉬워졌으니 유지 보수성이 향상된 모습을 볼 수 있다.
'자료구조' 카테고리의 다른 글
[이전 완] 크기와 종류 (학교 과제, p45) (0) | 2024.04.09 |
---|---|
정보의 특징 (p14) (0) | 2024.04.08 |
[이전 완] 빅 데이터 활용 사례 & 유망 직종 (학교 과제, p26) (0) | 2024.04.08 |
[이전 완] 렝스 부호화와 반복길이 부호화 (학교 과제, p29) (2) | 2024.04.03 |
[이전 완] 부동 소수점과 바이어스 값 (학교 과제, p23) (0) | 2024.03.26 |