과학

C++의 기능을 알아보자 - 객체지향

으.. 내가 지금까지 썼던 글들이 어렵다니..

이제는 코딩보다는 개념 위주로 해야겠음 ㅋㅋ


참 오늘글은 좀 퀄리티가 좀 떨어 질거야...

이론보다 실습으로 먼저 배운탓임... ㅎㅎ


컴퓨터가 발명되고 컴퓨터 프로그래밍의 방식은 주로 절차 지향위주 였어.


"이것은 이렇게 되고 이럴때는 저렇게 실행 한다음 다시 이렇게 한다."

거참 말이 이상하네... ;;


이런식으로 근데 절차 지향 프로그래밍 진짜 최고의 효율을 낼수가 있어.

그런데 절차 지향 프로그래밍의 문제점이 유지 보수가 힘들어 진다는거야


예를 들어서 자동 판매기 프로그램을 짰다고 해봐.


동전을 넣을떄까지 기다리고있다가 동전의 액수를 센다.

알맞은 액수의 음료수를 보여준다.

알맞은 액수의 음료수를 선택하면 음료수를 주고, 거스름돈이 있다면 거스름돈을 내준다.

알맞지 않은 액수의 음료수를 선택했다면 오류!


이런 절차가 되겠지?

근데 만약에 지폐를 받는다고 생각을 해봐. 또한 음료수뿐만 아니라 라면도 추가 한다고 하자고..

뭐 말로는 표현하기야 쉽지만 저걸 프로그래밍 한다고 하면 쉬운일이 아니겠지?

(실제로 자판기 같은 마이크로 컨트롤러 프로그래밍은 힘들다... ;;;)


그래서 이런생각을 가지게 되지.

아 코드의 효율은 좀 떨어 져도, 유지 보수가 잘되야 하지 않을까?

유지 보수가 잘 안된다면 스파게티 코드가 되서 효율이 떨어지거나, 다시 짜서 시간이 아깝잖아..


그래서 객체 지향 프로그래밍 개념이 나오게 되었어...


객체 지향 프로그래밍은 마치 생물에서 사람이라는 개체가 되려면 세포 - 조직 - 기관 - 기관계 - 개체처럼 생각 하면되..

(개념만 이렇게 하자고 ㅎㅎ)


개체 = 목적이 되는 프로그램.

기관, 기관계 = 객체

조직 = 메소드나 멤버 변수들

세포 = 메소들의 코드라인.


우리가 예로 들을 프로그램은 자판기야.

자판기에는 화폐를 주고 받는 부분, 창고, 메뉴판 이렇게 이루어 질수 있지.


자 저러한 부품을 가지고 자판기를 만들어 보면


화폐를 주고 받는부분에서는 화폐를 받고 남은 거스름돈만 주면되.

창고는 선택한 물건반 보내주면되.

메뉴판은 사용자가 뭘선택 했는지만 받으면되.


이렇게 어떤 작은 기능단위로 묶이게 되겠지.

이건 캡슐화 라고 불러.


이렇게 되면 그 객체에서 실제로 무슨일이 일어나는지 신경을 안써도 되지? (쓰는 입장에서는..)

우리가 자판기에서 음료수를 사먹을때 그안에서 어떤일이 일어나는지 신경 안쓰고 메뉴판에서 음료수 선택하고 음료수 먹잖아?

이걸 객체끼리 적용해보자면 창고 객체는 메뉴판 객체에서 무슨일이 일어나든, 메뉴판이 시키는것만 창고에서 꺼내면 되는거야.

이걸 정보 은닉화라고 불러.


갑자기 이런 생각이 들거야 어차피 절차를 생각 해야 되잖아?

물론 생각은 해야지.. 근데 만약 자동차를 설계하고 만든다고 할떄

그게 그냥 절차대로 만든다면 쉬울까?

우선 기능을 나누고 생각한다면 좀더 쉽겠지?


만약 이쪽 계열로 진학하거나 취직 할 게이들은

우선 객체지향은 이런거다 라고만 알아 두면 좋을거야..


ps, 이제 슬슬 학점나오고 연구실 플젝나오니 나도 슬슬 바뻐진다... 글 주기가 늦어도 이해 바람.. ㅎㅎ

2개의 댓글

2014.01.01
난 그래서 씨샵이 좋음 객체지향 화이팅
0
2014.01.03
Procedural Oriented Programming을 편의상 절차지향 언어라고 부르긴 하지만, 정확하게 알았으면 하는 마음에서 한마디 할게

모든 프로그램은 결국 철차적으로 진행될 수 밖에 없어.

C로 프로그래밍 한다고 해도 모듈화를 통해 객체지향처럼 할 수도 있고
C#으로짜도 다 때려 박으면 거지같아 지지

Procedural Oriented Programming , Object Oriented Programming 두개의 개념은
Procedural를 절차라고 해석하기 보다 프로그래밍에서 프로시저 ,즉 함수나 메소드 라고 봐야 명확해져

Procedural Oriented Programming - (함수 기반(지향) 프로그래밍)
Object Oriented Programming - (객체(JAVA나 C#의 class) 기반 프로그래밍)

*객체의 설명 - 객체 : 모든 물체는 상태(변수)와 동작(메소드)로 이루어져있다.

데이터와 함수 의 관계로 비교하자면

프로시저기반 : 데이터+데이터+함수+함수+함수
객체기반 : ([데이터+함수] <- 객체) + ([데이터+함수] <- 객체)

이렇게 되지

절차지향언어(프로시저 기반)의 단점은 데이터와 함수가 분리되어 있기때문에
어떤 데이터를 바꿨을때 그 데이터에 영향을 받는 함수들이 무엇인지 찾기 힘들다는거야
그래서 관련있는 데이터와 함수를 묶어서 이해하자는 객체기반 언어가 나타났지.
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
563 [과학] 경계선 지능이 700만 있다는 기사들에 대해 34 LinkedList 12 21 일 전
562 [과학] 번역)새들은 왜 알을 많이 낳는가? - 후투티의 형제살해 습성... 7 리보솜 3 2024.03.23
561 [과학] 학계와 AI, 그리고 Bitter Lesson (쓰라린 교훈) 26 elomn 35 2024.02.17
560 [과학] 지구의 속삭임, 골든 레코드의 우주 9 Archaea 10 2024.02.16
559 [과학] 잔혹한 과학실험 이야기 <1> 절망의 구덩이 19 개드립하면안됨 37 2024.02.15
558 [과학] 스트레스를 받으면 술이 땡기는 이유 12 동식 16 2024.02.10
557 [과학] 지능은 모계유전이 아니다. 40 울릉특별자치도 35 2024.01.26
556 [과학] 진화를 생각할 때 고려할 것들 23 날씨가나쁘잖아 12 2024.01.17
555 [과학] 학문적(과학적) 접근과 유사 진화심리"학" 26 날씨가나쁘잖아 19 2024.01.15
554 [과학] 호모 사피엔스의 야릇한 은폐된 배란에 대한 남녀 학자의 다... 14 개드립하면안됨 15 2023.12.29
553 [과학] 김영하의 작별인사를 읽고 느낀 점 (스포있음) 21 장문주의 2 2023.11.28
552 [과학] 제4회 포스텍 SF 어워드 공모전 ( SF 단편소설 / SF 미니픽션 ) 2 따스땅 1 2023.11.25
551 [과학] 펌) CRISPR 유전자 가위 치료제 "최초" 승인 12 리보솜 7 2023.11.25
550 [과학] 러시아는 기술산업을 어떻게 파괴시켰는가(펌) 9 세기노비는역사비... 15 2023.11.18
549 [과학] 고양이에 의한 섬생태계 교란과 생물 종의 절멸 (펌) 2 힘들힘들고 6 2023.11.16
548 [과학] 번역) 알츠하이머병 유전자는 어떻게 살아남았는가? 12 리보솜 10 2023.11.15
547 [과학] 『우영우』의 자폐 스펙트럼 장애 개념이 왜곡인 이유 (펌) 47 힘들힘들고 10 2023.11.12
546 [과학] 흑수저 문과충 출신 구글 취직하는 파이썬 특강 -1 14 지방흡입기 11 2023.09.27
545 [과학] 국가별 당뇨 유병율 이거 뭐가 바뀐건지 아는사람? 8 LAMBDA 1 2023.09.27
544 [과학] 물샤워 ㅇㅈㄹ 하는 놈들 봐라 171 철동이 48 2023.09.23