프로그래머/Java Managed Programming 썸네일형 리스트형 [개체지향 프로그래밍] 상속 상속 상속(inheritance) 거의 모든 사람이 OOP의 핵심이라 여기는 특성 초창기 OO에서 가장 중요한 특성이라 여김 현재에도 상속을 지원하지 않으면 OO 언어라고 안 보는 게 보통 OOP의 또 다른 매우 중요한 특성인 다형성의 기반 OOP에서의 상속이란? 이미 존재하는 클래스를 기반으로 새 클래스를 만드는 방법 새 클래스는 기존 클래스의 동작과 상태를 그대로 물려 받음(유전) 그 외에 새 클래스만의 동작과 상태를 추가 가능(진화) 물론 이 새 클래스를 상속해서 또 다른 클래스를 만들 수 있음 이미 존재하는 클래스를 부르는 이름 부모(parent) 클래스 기반(base) 클래스 새 클래스를 부르는 이름 자식(child) 클래스 파생(derived) 클래스 두 클래스 간의 상속 관게를 설명하는 표현.. 더보기 [개체지향 프로그래밍] static | 싱글턴 | 내포 클래스 static, 싱글턴, 내포 클래스 static 모든 것이 개체 속에 있는 불편함 이런 단순한 계산도 개체를 만들어서 해야 하나? 개체 단위기 아니라 클래스 단위에서 뭔가를 하고 싶을 때는? 정적 멤버 함수 예 // Math.java public class Math{ public static int abs(int n){ return n b ? a : b; } } // 메인 함수 int absValue = Math.abs(-2); int minValue = Math.min(100, -2.. 더보기 [개체지향 프로그래밍] 개체 모델링 | 클래스 다이어그램 | 유연성 | OOP 개체 모델링 클래스 다이어그램의 범위 클래스가 가지고 있는 상태 상수는 클래스 다이어그램에 포함 x 클래스에 실행할 수 있는 동작의 목록(실제 구현은 보여주지 않음) 클래스 간의 관계 유연성의 두 얼굴 수십년동안 실전에 OOP를 사용하고 업계까 깨달은 것 안 유연한 클래스를 만드는 경우가 더 빈번하며 그래도 상관 없음 절대 반지는 없음 어느 정도의 유연성이 필요한지는 각 프로젝트마다 다름 OOP 공부 가이드라인 프로그래머의 기본자세를 확실히 잡을 것 읽기 명확한 코드 만들기 실수를 저지르기 어려운 코드 만들기 문제를 해결하는 코드 만들기 문제가 생기면 디버깅 하기 필요에 따라 점점 유연성을 키우는 법을 배워 나가기 더보기 [개체지향 프로그래밍] 접근 제어자 | getter/setter | 캡슐화 | 추상화 개체는 자신의 상태를 스스로 책임져야 함! 즉, 개체 외부에서 개체의 상태에 직접 접근하는 것을 막아야 함 개체의 상태를 변경하는 주체는 개체 자신인 게 이상적 접근 제어자(access modifiedr)를 통해 이런 일을 할 수 있음 접근 제어자 어떤 외부자들이 개체 속에 접근할 수 있는지 정의 public: 누구나 접근 가능 protected: 자식들만 접근 가능 생략할 경우: 같은 패키지에 속한 클래스들만 접근 가능 default 혹은 package 접근 제어자라고 부름 private: 외부 접근 금지 접근 제어자: private 외부자들은 접근할 수 없음 클래스 내부에서만 접근 가능함 클래스의 경우 내포(nested) 클래스에 한 해 붙일 수 있음 private 멤버 변수 public class .. 더보기 [개체지향 프로그래밍] 개체 생성 | 가비지 콜렉터(garbage collector) | 생성자(constructor) 개체 생성 시 멤버 데이터의 초기화 C human_t* adam = (human_t*)malloc(sizeof(human_t)); // adam->name: 쓰레기 값 // adam->age: 쓰레기 값 // adam->sec: 쓰레기 값 printf("%d\n", adam->age); C 구조체의 변수는 선언 시 초기화가 안됨 메모리에 남아있던 쓰레기 값이 그대로 유지됨 Java Human adam = new Human(); // adam.name: null // adam.age: 0 // adam.sex: null System.out.printf("%d", adam.age); Java는 0에 준하는 값으로 초기화해 줌 int는 0 float은 0.0 참조형은 null로 public class Huma.. 더보기 [개체지향 프로그래밍] 클래스(class) | 접근 제어자(public, private) | 인스턴스(instance) 간단한 클래스 코드 클래스 선언 예 public class HUman{ public String name; public int age; public Sex esx; public void walk() { this.age += 1; } public void eat() { this.age -= 1; } public void speak() { System.out.printIn("hello friend"); } } 접근 제어자 public 멤버 변수 public ; 멤버 함수 public () {...} 멤버 변수와 멤버 함수 선언 시 앞에 붙는 접근 제어자 외부에서 클래스 내부에 담긴 상태/동작에 접근하는 것을 허용 여기서 외부는 다른 패키지를 의미 몇 가지 용어 정리 상태를 칭하는 용어 멤버 변수(member.. 더보기 [개체지향 프로그래밍] 개체지향 프로그래밍이란? | 개체지향 프로그래밍의 필요성 | 개체지향 프로그래밍 특성 Ch03. 개체지향 프로그래밍의 필요성 구조체의 한계 데이터의 비인간화 데이터가 많아지면 관리가 힘듦 실수할 여지가 증가 보완책 : 구조체 사용 한계1 : 여전히 데이터왕 동작이 분리되어 있음 한계2 : 어떤 구조체가 어떤 함수랑 연관 있는지 찾기 복잡함 사람이 세상을 인지하는 법 사람은 세상을 물체(object)의 집합으로 인지 물체는 상태를 가질 뿐만 아니라 동작도 할 수 있음 상태와 동작 상태 - 변수 동작 - 함수 모든 것이 개체는 아니다! 개체지향 프로그래밍 OOP 프로그래밍을 구성하는 기본 요소를 개체로 보려는 노력 OOP에서 프로그램이란? 상호작용하는 개체들의 집합 절차적 프로그래밍은 실행할 명령어의 목록을 프로그램으로 봤음 절차적 프로그래밍은 매우 객관적 어떤 프로그램이라도 최종적으로는 절.. 더보기 [포프 tv 복습] Java 기본 문법, Java와 C,C#의 차이 Ch02. Java 언어의 기본 문법 "Hello POCU" 출력하기 package academy.pocu; public class HelloPocu { public static void main(String[] args){ System.out.println("Hello POCU"); } } Java에서는 언제나 클래스가 필요 한 .java 파일에는 최고 레벨 public 클래스가 하나만 있어야 함 클래스 안에 다른 클래스를 넣을 수 있음 내포(nested) 클래스 내포 클래스는 public 이어도 상관 없음 main 함수는 반드시 이 시그내처대로 만들어야 함 매개변수 : String[] args 문자열 배열 커맨드 라인으로부터 받은 인자 Java에도 printf()가 있다 String name = "M.. 더보기 이전 1 다음