Page History
...
Code Block | ||||
---|---|---|---|---|
| ||||
// 사용파트+구현파트 int main() { printf("Hello, World!"); printf("Hello, World! Again"); return 0; } |
입력을 받아 명시된 순서대로만 절차적 프로그래밍은 프로그래밍된 순서대로 처리하고 결과를 내는 방식으로 코드의 라인수대로 진행합니다.
OOP가 가진 장점중 하나인 코드의 재사용에 어려움이 있으며 명령의 재 사용을 위해 코드의 점프를 하는
프로그래밍 언어도 있습니다.
방식입니다.
구조적 프로그래밍
Code Block | ||||
---|---|---|---|---|
| ||||
//사용파트 int main() { say("Hello, World!"); say("Hello, World!"); return 0; } //구현파트 int g_sayCount = 0; void increseSayCount() { g_sayCount++; } void say(string message) { if(g_sayCount==0) hello(message) else helloAgain(message); increseSayCount(); } void hello(string message) { printf(message); } void helloAgain(string message) { printf(message + "Again"); } |
절차적 프로그래밍 방식의 개선된 형태 형태로 프로그램을 함수단위로 나누고 구조화하여 함수끼리 호출하는 방식입니다.
큰 문제를 해결하기 위해 문제를 작은 단위들로 나누어 해결하는 방식 Top-Down 방식입니다.
함수를 통한 코드의 재사용이란 장점은 어느정도 가능해졌습니다.
하지만 책임단위 구분이 없고 누가 누구를 호출할수 있는지에 대한 규칙이 없기때문에 함수가 늘어갈수록
유지보수가 어려워지는것은 동일합니다사용기법에 가까운 절차적 프로그래밍의 틀에 벗어나지는 못하였습니다.
객체지향 프로그래밍
Code Block | ||||
---|---|---|---|---|
| ||||
//사용파트 int main() { TalkMan talkMan= new TalkMan(); talkMan.say("Hello, World!"); talkMan.say("Hello, World!"); return 0; } //객체 정의파트 public class TalkMan { public int sayCount = 0; public void increseSayCount() { sayCount++; } public void say(string message) { if(sayCount==0) hello(message) else helloAgain(message); increseSayCount(); } public void hello(string message) { printf(message); } public void helloAgain(string message) { printf(message + "Again"); } } |
...
다소 절차적 기계어에 가까웠던 프로그래밍 해결방식을 추상화 가능하게 했다란것입니다.
추상화는 패러다임 전환관점이기도 하지만
컴퓨터 과학에서 추상화(abstraction)는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다.
-위키피디아
...
Singer은 이미 말하기방식을 계승을 받았지만, 이것을 다르 방식으로 변경하여 말하는 방식을 변경하고 재정의하는것이 함수오버로딩 입니다.
나는 트로트,발라드등 다양한 장르로 노래를 부르고 싶다고~
코드의 유지보수관점에서 가독성과 유연성을 높일수 있는 방식입니다.
Code Block | ||
---|---|---|
| ||
public class Singer: TalkMan { //............... public void sing(string message) { playText( message); } public void sing(string message,int mood) // 오보로딩을 통한 기능확장 { playText( message, mood); } public void say(string message) //오버라이딩을 통한 기능 재 정의 { sayText( message ); } //................ } |
추상화
컴퓨터 과학에서 추상화(abstraction)는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다.