알고리즘 과 OOP 는 서로 다른 두 용어로, CS 용어라는 공통점 만 있습니다. 간단하게 - 알고리즘이처럼 요리 조리법 : 할 x를 다음 필요한 재료를 단계 1,2,3,4,5,6을 ... 당신은 당신의 식사를 준비합니다.
즉,이 보인다 말했다 자연 algortihms에 맞는가 설명하는 절차 방법. 절차 적 수단 아무것도 아닌 다른 : 첫 번째 할 X를 다음 할 y로 .
일반적인 문제는 다음과 같습니다.» x 집합을 정렬하는 방법 ?«. 이해하기 쉬운 솔루션은 bubble-sort
다음과 같습니다.
- 첫 번째 요소에 도달하지 않고 반복하는 동안 마지막 요소에서 세트를 반복하십시오.
- 첫 번째 반복의 시작부터 현재 요소까지 두 번째 반복을 시작하고
- (2)의 현재 요소와 후속 요소를 비교
- 더 큰 경우, 스왑 포지션
그것은-알고리즘의 알고리즘 / 언어 적 설명입니다 bubblesort
.
다음은 절차 적 / 의사 코드 구현입니다.
bubbleSort(Array A)
for (n=A.size; n>1; n=n-1){
for (i=0; i<n-1; i=i+1){
if (A[i] > A[i+1]){
A.swap(i, i+1)
}
}
}
그것은 쉽다.
방법이 releate 않는 OOP를 ? 당신이 사용할 수있는 알고리즘을 다루다에 컬렉션 (객체 자체)의 객체를 :
Javascript의 예 ( 깨끗한 OO-Lingo 는 없지만 상용구가 거의없고 이해하기 쉬운)
objects =[{"name":"Peter"}, {"name":"Paul"}, {"name":"Mary"}]
compareObjects=function(x,y){ return x.name>y.name };
sorted = objects.sort(compareObjects)
console.log(sorted)
우리는 a) 컬렉션 objects
, b)sort
정렬 알고리즘을 포함 / 추상화하고 c) 우리의 객체 Peter , Paul , Mary 를 포함 하는이 컬렉션에 공통된 방법을 가지고있다 . 정렬 사양은 여기에 있습니다 .
알고리즘과 OOP의 관계는 무엇입니까? 두 개의 독립적 인 주제입니까?
말한 것으로부터, 분명해야하며, 그 대답은 다음과 같아야합니다.
OOP가 알고리즘을 어떻게 도울 수 있습니까? 아니면 어떤 방향으로 영향을 줄 수 있습니까?
OOP는 하나의 프로그래밍 스타일입니다. 어떤 종류의 도움도 될 수 없습니다 . 그렇지 않으면 객체에 무언가를하기 위해 OO 언어로 알고리즘을 구현할 수 있습니다 (그림 참조).
OOP에 의해서만 제시되고 해결 될 수있는 문제가 있습니까?
나는 하나를 생각할 수 없다 (그러나 그것이 불가능하다는 것을 의미하지는 않는다). 그러나 다른 방법으로 살펴보면 OOP가 유용합니다. 문제를 모델링하고 적절한 알고리즘으로 해결하려면 OOP가 유용합니다. 당신의 기록이 말해 friends
그들을 모델링 할 수있는 당신 objects
과를 properties
당신이 원하는 경우 list
의 friends
분류 어떤 식 으로든를, 당신은 정확하게 할 위에서 주어진 예제 코드를 사용할 수 있습니다.
알고리즘 교과서가 더 절차 지향적 인 이유는 무엇입니까?
말했듯이 절차 는 알고리즘 의 특성 이기 때문에 자연 스럽습니다 .