대상을 대상으로 프로그래밍-소개.

안녕하십니까,fam,다른 블로그로 돌아온 것을 환영합니다.
최근에 나는 OOP의 기본 원리를 묘사해야 하는 상황을 만났다. 시간이 너무 길어서 나는 실제로 OOP로 엄격하게 인코딩을 하기 때문에 복습할 때가 되었다.
간단하게 말하자면, 내가 사용한 코드 예시는 템플릿이 될 것이다. 나는 일부러 방법을 비워 두었기 때문에, 당신의 상상력을 이용하여, 우리는 명명약정을 통해 그들이 되돌아오는 내용을 계산할 수 있어야 한다😇.

함수식 프로그래밍
그렇다면 OOP이 직면한 것은 무엇일까?이것은 주로 함수식 프로그래밍이다.
함수식 프로그래밍은 두 가지 정의로 정의된다
  • 이것은 확실하다. 같은 파라미터를 주면 같은 결과를 되돌려준다.
  • 인용을 통해 전달되는 전역 대상을 수정하는 부작용을 일으키지 않는다.
  • 나는 여기서 OOP에 대해 깊이 토론하지 않고 단지 비교를 하고 싶지만 이것은 내가 앞으로 토론할 수 있는 화제이다.

    OOP이란?
    OOP는 객체 설계를 둘러싼 프로그래밍 설계 모델로, 객체 자체는 이러한 데이터에 함수를 조작하기 위해 필드와 방법의 형식으로 자신의 데이터를 포함한다.
    가장 흔히 볼 수 있는 OOP는 창설 대상의 실례를 둘러싸고 다른 클래스와 상호작용하는 클래스로 배정된다.
    따라서 함수식 프로그래밍은 비교적 작은 포함 프로그램으로 여겨지고 데이터를 주어진 상황에서 서로 다른 결과를 되돌려준다. OOP는 그 안에 포함된 내용을 나타내고 자신의 데이터 구조, 조작 규칙을 포함하며 자신의 상태/데이터를 바꾸는 대상이다.

    크다
    서로 다른 OOP 언어가 더 많이 언급되었지만 OOP는 네 가지 주요 원칙이 있는데 그것이 바로 봉인, 추상, 계승과 다태이다.
    우리 는 봉인 과 코드 조금 을 통해 직접 그것 을 깊이 이해하자!

    봉인
    위키백과에 따르면 봉인은 데이터를 조작하는 방법에서 데이터를 묶는 것으로 봉인은 클래스 내의 데이터를 외부 대상으로 제어할 수 있는 좋은 방법이라는 것을 의미한다.
    클래스 내부에서, 우리는 Getter와setter를 사용하여 어떤 필드를 보고, 접근할 수 있으며, 어떤 데이터를 수정할 수 있는 규칙을 설정할 수 있습니다.
    코드 자체로 봉인하여 보안을 강화하고 우리가 원하는 사용 가능한 내용과 방문할 내용을 정의할 수 있도록 합니다.
    코드 좀 봅시다.
    class Teacher {
        // Declare protected (private) fields
        _attendance = 0;
    
        constructor(name, birthday, subjects, grades) {
            this.name = name;
            this.birthday = birthday;
            this.subjects = subjects;
            this.grades = grades;
        }
    
        get showGrades() {
            // Getter
            return this.calcGrades();
        }
    
        set showGrades(grades) {
            // Calculate grades formula
            return result;
        }
    
        rollCall() {
            return console.log("Roll Call!");
        }
    
        updateAttendance() {
            // add a day to the attendance days
            this._attendance++;
        }
    }
    
    const teacherOne = new Teacher("Cooper", "01/01/1984");
    teacherOne.showGrades();
    
    이 예에서 showGrades () 는 get으로 시작하고 get은 set showGrades (grades) 를 호출하여 모든 작업을 수행합니다.
    이것은 추상적인 확장이다.

    추상
    추상과 봉인은 비슷한 점을 가지고 방대하고 육중한 코드 라이브러리를 줄이고 유지보수성을 높이기 위해 추상은 대형 대상을 더욱 작은 대상으로 나누었다.
    예를 들어 한 대의 자동차가 우리가 한 대의 자동차를 가동할 때 우리는 열쇠를 사용한다. 우리가 열쇠를 돌리고 모터가 작동할 때 모든 자동차 가동 원인에 대한 내부 조작은 열쇠가 돌아가는 대상 뒤로 추상화된다.
    우리는 자동차가 왜 작동하는지 모든 내부 작업 원리를 알 필요가 없다. 그것은 단지 작동했을 뿐이다.

    상속권
    계승은 두 대상이 기능을 공유할 때 대상을 다시 사용하고 여분의 코드를 줄이는 방법이다.
    우리 교사와 학생 대상을 예로 들면 출생일, 성적 등 다른 점이 있지만 학생들은 성적과 과목 필드가 있고 교사는 없다(또는 같은 신분이 아니지만 이따가 더 많은 내용이 있을 것이다).
    그래, 계승은 교사의 모든 공유 필드를 통합하고 모든 내용을 복제하지 않아도 되는 빠른 방법이 될 것이다.
    코드 좀 봅시다.
    class Teacher {
        // Declare protected (private) fields
        _attendance = 0;
    
        constructor(name, birthday, subjects, grades) {
            this.name = name;
            this.birthday = birthday;
            this.subjects = subjects;
            this.grades = grades;
        }
    
        get showGrades() {
            // Getter
            return this.calcGrades();
        }
    
        set showGrades(grades) {
            // Calculate grades formula
            return result;
        }
    
        rollCall() {
            return console.log("Roll Call!");
        }
    
        updateAttendance() {
            // add a day to the attendance days
            this._attendance++;
        }
    }
    
    // Child class Student, inherits from parent Teacher
    class Student extends Teacher {
        constructor(name, birthday, subjects) {
            super(name, birthday, subjects);
        }
    
        skipClass() {
            // additional method for Student child class
            return console.log("I missed the bus");
        }
    }
    const studentOne = new Student("Cooper", "01/01/1984");
    studentOne.rollCall();
    
    예시에서 볼 수 있듯이 Student는 롤콜을 포함하지 않지만 부모 교사 클래스로부터 계승된 Student 클래스로서 우리는 Student의 실례를 만들고 롤콜 방법을 호출할 수 있다.
    다행이다, 응

    다태성
    그중에서 가장 복잡할 수도 있지만, 그것을 분해합시다.
    다태성은 한 대상이 여러 가지 형식의 능력을 취하거나 더 쉽게 읽을 수 있는 용어로 말하자면 부류와 같은 클래스를 사용할 수 있게 함으로써 데이터 유형과 혼동되지 않고 모든 자류가 자신의 버전을 실현할 수 있는 방법이다.
    예를 들어 우리 교사반은 성적이 있고 우리 학생반도 성적을 계승하지만 학생들이 성적에 대한 계산은 교사가 성적을 계산하는 방식과 다르다. 이것이 바로 다태적인 원인이다.
    다태성은 파생류를 위해 서로 다른 방법을 만들 수 있음을 의미한다. 계승을 통해 대상은 하위 대상에 특정한 행위로 공유 부모 방법을 덮어쓸 수 있다.
    RollCall을 코드의 예로 사용
    class Teacher {
        // Declare protected (private) fields
        _attendance = 0;
    
        constructor(name, birthday, subjects, grades) {
            this.name = name;
            this.birthday = birthday;
            this.subjects = subjects;
            this.grades = grades;
        }
    
        rollCall() {
            console.log("Roll Call!");
        }
    
        updateAttendance() {
            // add a day to the attendance days
            this._attendance++;
        }
    }
    
    // Child class Student, inherits from parent Teacher
    class Student extends Teacher {
        constructor(name, birthday, subjects) {
            super(name, birthday, subjects, grades);
        }
    
        rollCall() {
            console.log("Here, teacher.");
        }
    }
    
    const studentOne = new Student("Cooper", "01/01/1984");
    studentOne.rollCall() => Here, teacher.
    
    우리의 예에서 교사와 학생은 모두 롤러콜 () 방법을 사용하지만, 교사는 출근을 요구하고, 학생은 대답할 것이다.
    다태성은 우리가 부류로부터 방법을 계승할 수 있지만 필요에 따라 변경할 수도 있다는 것을 의미한다.
    이것은 아주 좋은 토끼굴의 순간이다. 나는 아래에서 며칠 동안 할 수 있지만, 네가 이해하기를 바란다.
    그래, 나는 네가 나처럼 이 OOP의 회고를 좋아하길 바란다. 만약 네가 지적하고 싶은 것이 있다면 언제든지 나에게 말해라.
    내가 블로그를 점점 더 많이 쓰기 시작하면서 나는 건설적인 피드백을 매우 좋아한다.
    조용히!
    닭장

    좋은 웹페이지 즐겨찾기