본문 바로가기

포프TV

[개체지향 프로그래밍] 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.. 더보기
[개체지향 프로그래밍] 접근 제어자 | 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.. 더보기
[포프 tv 복습] Type-Generic 함수 만들기, 정적 어서트, 메모리 정렬, 멀티스레딩 Type-Generic 함수 만들기, 정적 어서트, 메모리 정렬, 멀티스레딩 와 제네릭 선택 매개변수 형에 알맞는 수학 함수를 찾아서 호출해주는 매크로 함수 컴파일러가 알아서 구현해 준 것 프로그래머가 이런 매크로를 직접 만들 방법이 없었음 C11에서는 가능 제네릭 선택(generic selection)이라 부룸 _Generic 키워드를 사용 이제 도 이 키워드를 사용해서 직접 구현 가능 _Generic 키워드 _Generic(, ) 컴파일 도중에 여러가지 표현식 중 하나를 선택하는 방법 실행 중에 선택하는 것이 아님 매크로 함수의 대체 목록으로 사용하는 게 일반적 흡사 switch 문과 비슷해 보임 _Generic으로 ceil() 함수를 구현한 예 #include #include #define ceil.. 더보기
[포프 tv 복습] C99, C11 C99 C99 이전의 부동 소수점 연산 오류 처리 부동 소수점 연산 중 오류가 날 경우 그 이유를 오류 조건이라 함 C 라이브러리 함수가 오류 조건을 보고하는 경우가 있음 이 오류 조건의 일부는 errno를 통해 확인 가능 인자가 수학적으로 정의된 범위를 벗어날 경우 : EDOM 오버플로가 발생한 경우 : ERANGE 언더플로가 발생한 경우 : ERANGE가 설정될 수도 있음(구현에 따라 다름) C99의 부동 소수점 연산 오류 처리 좀 더 세분화된 부동 소수점 전용 오류 보고 기능 추가 이것을 '부동 소수점 예외'라고 부름 예외라고 하지만 다르 언어에서 말하는 예외는 아님 그냥 다른 형태의 오류 코드 errno에서 찾을 수 없던 오류 조건도 보고 됨 구현에 따라 다음 중 하나를 지원 여전히 errno을 .. 더보기
[포프 tv 복습] 전처리기 전처리기 전처리기로 할 수 있는 일들 다른 파일을 인클루드 전처리기 지시문 #include을 사용 매크로를 다른 텍스트로 대체 #define, #undef와 전처리기 연산자 #, ##를 사용 소스파일의 일부를 조건부로 컴파일 전처리기 지시문 #if, #ifdef, #ifndef, #else, #elif, #endif를 사용 일부로 오류를 발생시킴 전처리기 지시문 #error를 사용 매크로 대체 : #define #define 식별자 대체_목록(선택) #define A (10) 전처리기가 소스 코드 뒤지다가 A가 보이면 모두 (10)으로 바꿔줌 #define A 이것도 가능 하지만 바꿔줄 내용이 없음 그 대신 다른 전처리기 지시어로 A가 정의 돼 있는지 판단 가능 #define TRUE(1) #define.. 더보기
[포프 tv 복습] C 자료구조 기초 자료구조 기초 자료구조란? - 컴퓨터에서 여러 자료들을 조직적, 체계적으로 저장하는 방법 - 보통 동일한 자료형을 여럿 저장하는 ㅜㄱ조를 의미 - 자료구조에 따라 요소들 사이의 관계를 정의하는 규칙이 있음 - 다음 요인에 따라 상황마다 보다 효율적인 자료구조가 존재 - 데이터에 접근하는 빈도 - 데이터에 접근하는 방법(ex. 삽입, 검색, 읽기, 지우기 등) 자료구조의 효율성 - 효율성은 주로 시간 복잡도를 말함 - 공간 복잡도를 포함하는 경우도 있음 - 따라서 주로 Big-O 표기법을 사용 - 보통 효율성을 논할 때는 하드웨어 최적화를 고려 안 한 이론이 전부 - 적은 용량의 데이터는 그렇지 않을 수 있음 배열 메모리 한 덩어리로 표현 가능한 가장 간단한 자료구조 여러 자료들을 그 메모리 덩어리 안에 .. 더보기