Object Oriented - OOP이전 변수,함수, 배열, Structure사용
안녕하세요 알렉스 입니다. 저번에는 절차지향언어가 어떤식으로 진행되고 장점과 단점, 그리고 그로인해 스파게티 코드가 되기 쉽다는 것을 설명했습니다.
이제 이번에는 OOP가 나오기 전 어떤식으로 변수(veriable)와 함수(function)를 프로그램에서 이용했는지 설명해 드리겠습니다.
초창기에는 변수들을 이용하여 프로그램을 짰습니다. 지금과 같이 복잡하지 않았기 때문에 변수 여러개를 조합하여 하나의 프로그램을 만들었습니다.
하지만 프로그램의 복잡성이 높아지면서 이 변수들을 그룹짓기 시작했습니다. 더이상 원시타입변수(Primitive Data)만으로는 효율적으로 프로그램을 짤수 없게 되었습니다.
그룹을 짓는다고할때 한가지 예를 들겠습니다. 체스게임의
체스에서 나이트 말에 대해서 예시를 들겠습니다. 체스게임에서 나이트를 원시타입변수로 나타내면 위치,사망여부,색 등으로 그룹을 질수 있습니다. 또한 이것은 1개가 아닌 2개(흰색기준)로 구분지어서 나타내야 합니다.
체스를 둘때 위치를 알아야하며 아군인지 적군인지 구분이 필요하고 동시에 상대방의 말에의해 먹혔는지 안먹혔는지도 판별해야 합니다.
문제는 이런 그룹이 편하긴 하지만 검정말도 똑같이 그룹을 만들어야하고 다른 말들(킹, 퀸, 비숍 등등)의 그룹도 만들어야해서 갯수에따라 그룹이 증가하는것을 알수 있습니다.
이때 Structure가 능장하게 됩니다. Structure는 배열(Array)과 비슷합니다. 하지만 배열은 같은 속성(변수)에 대해서 저장을 할수 있게 합니다.
위 사진에서 배열은 Boolean만 저장 가능하고 다른 변수인 int 혹은 다른 변수를 저장할수 없습니다. 이처럼 배열이 받을수 있는 속성이 정해지면 그것만 받을수가 있습니다.
Structure는 여러가지 변수 뿐만 아니라 같은 Structure 또는 함수(Function)의 참조(reference)정보까지 저장할수 있습니다.
참조 정보란 주소값을 말하며 실제 함수를 저장한 것이 아니라 함수가 저장되어있는 주소값을 저장한 것입니다. 만약 Structure에서 함수를 실행하려고 할때 주소값에 존재하는 함수를 실행하게 되는 것입니다.
체스를 예로 들어서 알려 드리겠습니다.
댓글
댓글 쓰기