OOP 기본

4850 단어 computerscience
필요할 때마다 검토할 수 있도록 객체 지향 프로그래밍("OOP")을 살펴보겠습니다.

OOP 이전에는 어떤 문제가 있었나요?
먼저 어떤 문제가 해결되었는지 살펴보겠습니다. 이전에 OOP가 지배적인 프로그래밍 패러다임은 절차적 프로그래밍이었습니다. 절차적 프로그래밍은 단순히 변수에 저장된 많은 데이터와 해당 변수에 대해 일부 코드를 수행하는 함수였습니다. 문제는 이러한 유형의 코드가 확장됨에 따라 프로젝트 전체에서 동일한 코드 라인(일명 스파게티 코드)이 반복적으로 사용되었다는 것입니다.

OOP는 이 문제를 어떻게 해결했습니까?
캡슐화
OOP가 한 것은 단순히 관련 변수와 함수를 함께 개체로 구성하는 것이었습니다. 변수는 속성으로 알려지고 함수는 메서드로 알려지게 되었습니다.

//Procedural programming
let firstName = 'Joseph';
let lastName = 'Kim';

function findFullName(firstName, lastName) {
  return firstName + lastName;
}

//OOP
let user = {
  firstName: 'Joseph',
  lastName: 'Kim'
  findFullName() {
    return this.firstName + this.lastName
  }
}
user.findFullName();


위의 예에서 볼 수 있듯이 절차적 프로그래밍에서는 변수와 함수가 분리되지만 OOP에서는 하나의 객체로 구성됩니다. 어떤 면에서 이게 더 낫나요? OOP 스타일에는 매개변수가 더 적습니다. 매개변수가 적으면 기능을 유지하기가 더 쉽고 코딩 세계에서 더 나은 방법으로 간주됩니다.

추출
추상화는 복잡함을 숨겨서 처리할 필요가 없음을 의미합니다. 예를 들어 전자레인지를 생각해 보십시오. 전자레인지를 시작하려면 시작을 클릭하기만 하면 됩니다. 전자레인지를 사용하기 위해 내부적으로 어떻게 작동하는지 이해하려고 시간을 할애할 필요가 없습니다. 이 개념은 기본적으로 프로그래밍에서 동일합니다(예: 라이브러리가 제공하는 메서드를 사용하기 위해 라이브러리가 내부적으로 어떻게 작동하는지 알 필요가 없습니다).

이것은 어떤 이점이 있습니까?
1)객체에는 많은 속성과 메서드가 있을 수 있지만 그 중 일부는 외부에서 숨겨져 작업이 더 간편해집니다. 2) 또 다른 이점은 변경 시 영향을 줄이는 것입니다. 메서드나 속성이 숨겨져 있거나 비공개로 유지되는 경우 문제가 발생하면 해당 속성이나 메서드가 발생한 문제의 일부가 아님을 알 수 있습니다.

계승
상속은 다른 개체나 클래스에서 일부 속성이나 메서드를 상속하는 경우입니다. 이는 다른 개체에서 필요할 때마다 동일한 메서드나 속성을 작성할 필요가 없기 때문에 도움이 됩니다. 한 번만 만들어 재사용하면 됩니다.

다형성
이것은 정말 이상한 단어이지만 단순히 many(poly) + 형태(morphism)를 의미합니다. 그렇다면 이것이 프로그래밍과 어떤 관련이 있습니까? 간단히 말해서, 무한한 양의 if/else 문을 사용하지 않는 데 도움이 됩니다. 이것이 어떻게 가능한지? 예를 들어 보겠습니다. 동물, 돼지, 개 3개의 클래스가 있습니다. Dog 및 Cat은 Animal의 자식 개체이므로 Animal의 속성과 메서드에 액세스할 수 있습니다.

//Dog extends Animal
//Pig extends Animal

let kingdom: Animal[] = new Animal[];
let doggy = new Dog();
let piggy = new Pig();
kingdom.push(doggy, piggy);

for (let animal of kingdom) {
  animal.eat(); 
  animal.sleep();
  //we don't need to use if dog then sleep or if pig then sleep
  //we can just use eat() or sleep() because they are child object of Animal;
}

좋은 웹페이지 즐겨찾기