목록Java/개체지향 프로그래밍 with JAVA (14)
Lewis's Tech Keep
보호되어 있는 글입니다.
- 이미 존재하는 클래스를 기반으로 새 클래스를 만드는 방법 - 생성자 호출 순서 : 부모없이 자식이 생길 수 없다 (생물학적 관계라면!) : 1. 메모리에 개체 생성 2. 부모 생성자 호출 3. 자식 생성자 호출 : 부모 생성자를 어떤 생성자를 할 지 정하지 않는다면 기본 생성자를 호출함. - 개체는 생성 시 부터 유요한 상태를 가져야 한다. - 자식 생성자에서 부모 생성자 호출 방법 : super(); - super 키워드 : 현 개체의 부모 부분을 가리킴 : 부모의 멤버 변수 or 메서드 호출할 때도 사용한다. - 부모가 자식을 호출할 수는 없다. (자식을 상속 받지 않기 때문에 = 받는 것은 불가능하기 때문) - 부모 접근 방법 : protected 접근 제어자로 변경. - protected : ..
- 행동을 하기 위해서 개체 자체를 넘긴다. : 스프레이 안 쪽에 스프레이 로직만 들어가기 때문에 좀 더 개체 지향적이게 된다. : 복잡한 로직도 클래스 안에 숨길 수 있게 된다. - 개체 : 생물체 + 물체 : 물체에게도 주체성이 있게 됨. - 유연성 떨어진다 : 재활용성이 떨어졌다. : 재활용성을 높이면 유연성도 올라간다. - 사람의 사고방식 : 위에서 아래로 가 가장 자연스럽다 (파일을 너무 많이 점프하면 힘들어진다.) - 코드 유연성은 양날의 검 : 유연성 높 -> 성능 낮, 가독성 낮, 재사용성 높 : 유연성 낮 -> 성능 높, 가독성 높, 재사용성 낮 - 안 유연해도 괜찮아! : 절대반지는 없음, 유연성 필요는 회사마다 다름 - 필요에 따라 유연성을 유연하게 조정할 것 - 기본기의 중요성 : ..
What are we making? - 정답이란 없다 - 주관적임 - 클래스 다이어그램 : 어떤 시스템에 있는 클래스들을 보여주는 다이어그램 : 시스템 디자인 시각화를 위한 표준 : 시스템의 정적인 구조를 보여주기에 적합 - 실세계의 상태와 동작 모두를 가져오려고 하면 안된다. : 원하는 기능보다 더 들어온다는 것은 필요하지 않은 것도 들어갈 가능성이 높다는 뜻. : 작성한 코드는 유지보수의 대상 -> 코드를 여러번 고치게 됨 : 근데 이 코드가 많다면? -> 할 때마다 다 고쳐야 할 수도 있음 : 처음부터 올바르게 모델링할 수 있다는 망상을 버려야 한다. intelligent fool 은 언제나 뭔가를 크게, 복잡하게 위험하게 만든다. 천재성보다 용기가 더 중요
- 생성자는 개체가 생성과 동시에 올바른 상태임을 보장해야 한다. - 개체는 자신의 상태를 스스로 책임져야 함 - 개체 외부에서 개체의 상태에 직접 접근하는 것을 막아야 한다. -> 접근제어자 - 접근제어자 : public : 누구나 접근 가능 : protected : 자식들만 접근 가능 : default(package) 같은 패키지에 속한 클래스들만 접근 가능 : private : 외부 접근 금지 (내 개체 안에서만 접근 가능) - private 변경하려고 하면 -> 컴파일 오류가 난다. - private 의 경우에 호출 주체가 개체 내부라면 가능 - 일반적인 접근 제어자 : 멤버 변수 접근은 메서드를 통해서만 -> 캡슐화, 추상화 - private 메서드 용도 : 클래스 안 코드 중복을 막기 위한 용..
- 클래스 : 클래스와 개체 생성 : 상태 + 함수 : 왜 클래스 ? -> 자연 세계에서 생물 분류 중 class는 강이라고 부름 : 종, 과보다 상위 개념 : 어떤 개체든지 속한 클래스가 있음. : 비슷한 속성과 동작을 공유한다는 것을 의미 : Blueprint, 붕어빵 틀, 주물 - OOP에서의 클래스 : 새로운 개체 만들 때 명세서 : 속성, 동작 등등등 - 클래스 선언 : this.age : 현재 개체가 호출된 곳의 위치를 의미 - 접근 제어자 : 멤버 변수, 멤버 함수 선언 시 앞에 붙는 접근 제어자 : 외부에서 클래스 내부에 담긴 상태/동작에 접근하는 것 (외부: 다른 패키지를 의미) : public, protected, default, private 존재 - 상태를 칭하는 용어 : 멤버 변수..
- 개체지향 프로그래밍의 필요 : 절차적 언어 아쉬운 점 : 데이터의 비인간화 (사람이 사람대로 사는 것이 아니라 몸1, 몸2 이런 식으로 나뉘게 된다.) : 절차적 언어 아쉬운 점 : 데이터가 많아질 때 관리가 힘들어짐 (비이상적 예외라던지) : 보완책 C에서는 구조체 (C언어 구조체는 데이터만 딱 들어있음) - 실세계 사람은 어떻게 생각하고 행동할까 (상태와 행동이라는 개념) : 대상이 동작을 수행하는 것 : 대상이 굳이 알지 않아도 되는 정보는 알지 않아도 된다. : 대상은 필요한 정보만 알면 된다. : 사람은 세상을 물체의 집합으로 인지한다. (object의 집합) : 물체는 상태를 가질 뿐만 아니라 동작도 할 수 있음 : 상태 저장은 변수 & 동작은 함수 : 어떠한 상태가 나한테 필요하냐, 어떠..
- 메인 함수 - JAVA 프로그램 실행 시 반드시 필요한 약속 - 없을 시에 컴파일 오류 발생 - 패키지 목적 : 이름 중복 시 다른 패키지 안에 있다면 충돌 회피 가능 : 패키지 이름 중복 최소화 - 컴파일 : javac(java compile) -d : 결과물 -> .class 파일 = byte 코드로 되어 있음. : java -classpath : .class 파일에는 반드시 main 함수가 있어야 함. : 배포 방법 : .jar 파일을 만듦. -> lib : jar -> jar -cfm(compile file & manifest) - 자바 is Crossplatform (yes and no at the same time) : 맞기도하고 아니기도 하다. (jvm이 올라가 있어야 cross plat..