OOP의 세 가지 특징: 캡슐화

12173 단어 javaoopbeginners

OOP 언어의 세 가지 주요 기능.




머리말:
(이 섹션을 XD 소개로 건너뛸 수 있습니다.)

좋아, Java와 cpp는 내가 학교에서 배우는 언어이지만 이번 여름에 교수로부터 C에 대한 경험이 "더 좋았다"는 이메일을 받았습니다. 어머나)

그리고 우리는 이 두 언어가 객체 지향 프로그래밍 언어라는 것을 알고 있습니다. 따라서 절차 지향 언어(C와 같이 지금까지 배운 것)와 다른 세 가지 기능이 있습니다.

이 세 가지 기능은 많은 컴포지션의 인터뷰에서 발생률이 높기 때문에 내 지식을 요약하기로 결정합니다.

이 블로그는 JAVA 언어를 기반으로 하며 모든 OOP 언어 간에 여전히 차이가 있음을 알아야 합니다. 그리고 이 블로그에서는 "나의 단어"와 내 생각을 사용하여 그것이 무엇인지, 왜 존재하는지, 어떻게 사용하는지 설명하려고 합니다. 제 블로그에 잘못된 부분이 있으면 수정 부탁드립니다. 고맙습니다!

소개


  • 캡슐화
  • 상속
  • 다형성

  • 캡슐화: 무엇을 왜 어떻게



    1. 정의(무엇):

    동일한 기능을 가지고 있거나 같은 클래스에 속하는 개체를 함께 넣고 잘 포장하십시오.

    아시다시피 회사에는 다양한 관리자나 감독자가 이끄는 부서가 많이 있습니다. 예를 들어 IT_Department 클래스와 HR_Department 클래스가 있습니다.

    class HR_Department{
    
        private String Manager;
        private String[] Dep_Members;
    
        HR_Department(String manager_name){// constructor of HR_Dep
            Manager = manager_name;
        }
    
        private void employ(){
            System.out.println("Our company need to employ a new employee.");
        }
        private void dismissal(){
            System.out.println("We decide to dismissal someone...");
        }
    }
    
    class IT_Department{
    
        private String Manager;
        private String[] Dep_Members;
    
        IT_Department(String manager_name){// constructor of IT_Dep
            Manager = manager_name;
        }
    
        private void Access_Database(){
            System.out.println("Our IT Department can access database of our company.");
        }
        private void Power_outage(){
            System.out.println("IT Department decide to shut down the power for fixing problems.");
        }
    }
    
    class Google_Inc{
        private IT_Department it_Dep;
        private HR_Department hr_Dep;
    
        Google_Inc(String IT_Manager_Name,String HR_Manager_Name){// constructor of Google_Inc
            it_Dep = new IT_Department(IT_Manager_Name);
            hr_Dep = new HR_Department(HR_Manager_Name);
    
            System.out.println("Google Inc is established successfully!");
        }
    }
    
    public class Test {
    
        public static void main(String[] args) {
            // set up a company call newGoogle_Inc XD
            Google_Inc google_Inc = new Google_Inc("Jack", "Rose");
        }
    }
    


    당신이 이 회사의 CEO라면 이러한 다양한 부서를 관리하는 데 도움을 줄 몇 명의 관리자를 고용해야 하며 물론 모든 부서가 완벽한 순서로 작업하고 서로를 도와야 합니다.
    .

    2. 중요성(이유):

    어떤 클래스의 모든 데이터에 액세스할 수 없다면 이 시나리오가 얼마나 엉망이 될지 쉽게 상상할 수 있습니다.

    HR 직원이 IT 부서에 확인하지 않고 전원을 끄면 참을 수 없을 것입니다. (심지어 나는 어떤 회사에서도 일하지 않습니다 XD) 그것은 위험하고 어디에서나 선을 넘습니다.

    따라서 Encapsulation의 존재는 지금 그 중요성을 보여줍니다. 회사의 예는 모든 프로그램, 코드, 데이터 관리에도 적합합니다. 프로그램을 설계한 후 일부 사용자가 데이터에 액세스하여 편집할 수 있는 것은 위험합니다.

    따라서 Java의 경우 일반적으로 Permission Modifier를 사용하여 CLASS(데이터)를 잘 "패킹"합니다.
    1. public 2. protected(기본값)
    3. private (이전 코드 블록에서 볼 수 있듯이 클래스 및 변수를 수정하는 데 가장 많이 사용됨)

    분명히, 당신은 그것을 올바르게 사용한다면 그것을 깨달을 수 있습니다.
    권한 수정자를 사용하면 코드의 이점을 실현할 수 있습니다.

    1. 중요한 변수(vars) 또는 함수(funcs) 분리
    2. vars 또는 funcs에 편리하게 액세스
    3.중요도 높이기
    4. 보안 강화

    물론 이러한 이점으로 인해 코드에 액세스하기가 훨씬 더 어려워지고 액세스하는 데 더 많은 단계를 소비하게 됩니다.

    3. 캡슐화 구현(HOW):

    사용하기 전에 액세스할 수 있는 다양한 수정된 var 또는 func의 범위를 알아야 합니다.


    수정하다
    같은 클래스
    동일한 패키지
    하위 클래스
    모든 수업


    사적인




    기본




    보호




    공공의






    어떤 면에서 protected는 기본값과 같습니다.

    예: 할당=으로 직접 HR 부서의 관리자 이름에 액세스할 수 없습니다.


    따라서 "Getters"및 "Setters"라는 함수를 설정해야 합니다.

    class IT_Department{
    
        private String Manager;
        private String[] Dep_Members;
    
        IT_Department(String manager_name){// constructor of IT_Dep
            Manager = manager_name;
        }
    
        String getManager(){ // a classic getter function
            //return manager's name
            return Manager;
        }
        void setManager(String name){// a classic setter function
            //set name to manager's name
            this.Manager = name;
        }
    
        private void Access_Database(){
            System.out.println("Our IT Department can access database of our company.");
        }
        private void Power_outage(){
            System.out.println("IT Department decide to shut down the power for fixing problems.");
        }
    }
    


    따라서 캡슐화 구현이 코드에서 추상적임을 알 수 있습니다. 우리는 캡슐화를 현상 또는 기능이라고 부르는 것을 선호합니다. 명확하고 엄격한 코드 프레임이 있으면 코드가 매우 좋고 편안해 보입니다.

    주요 기능:

    public static void main(String[] args) {
            // set up a company call newGoogle_Inc
            Google_Inc google_Inc = new Google_Inc("Jack", "Rose");
    
            String name = google_Inc.it_Dep.getManager(); // assign "Jack" to name.
            google_Inc.it_Dep.setManager("Ben");// assign "Ben" to IT Department's manager
        }
    



    여러분의 조언과 댓글은 제가 앞으로 나아가는 힘입니다. 읽어주셔서 감사합니다.

    자신을 밀어붙이지 않으면 얼마나 잘 될지 결코 알 수 없습니다.
    리키 루안:

    이메일: [email protected]

    좋은 웹페이지 즐겨찾기