728x90

전체 글 204

JAVA 제네릭 타입 컬렉션 클래스

JAVA 제네릭 타입 컬렉션 클래스 배열 데이터의 삽입/삭제 용이, 동적 할당 용이를 위해 제네릭 타입 컬렉션 클래스 사용 제네릭 : 자료형의 일반화 , 제네릭 타입에 객체만 넣을 수 있다, 엄격한 타입 checking 컬렉션 : 자료구조, 기본 자료형은 wrapper 클래스 사용, 제네릭 기법으로 구현 하나의 클래스를 만들어서 여러 자료형의 배열을 만들고 싶다면 제네릭 클래스로 멤버 추가 제네릭 클래스의 객체가 생성될 때 자료형이 지정되고, 생성 뒤에는 해당 자료형만 담을 수 있음 Iterator : 반복자 객체, 컬렉션에서 요소의 순차 검색을 위한 인터페이스 - 모든 컬렉션은 Iterator를 통해 순차적으로 반복자 객체를 얻을 수 있다. Vector v = new Vector(); Iterator ..

JAVA Exception 사용자 예외처리

JAVA Exception 사용자 예외처리 String getMessage() : 예외 객체가 가지고 있는 에러 메시지 반환 void printStackTrace() : 예외 발생 원인과 경로를 추적하여 콘솔에 표시, 디버깅 목적 사용자 정의 예외에서는 throws 대신 throw를 사용한다. 사용자 정의 예외는 예외 객체를 만든 후에 throw라는 키워드를 이용해 예외를 던져줘야 한다. Exception으로부터 상속받으면 예외 메시지를 담을 수 있는 속성이 있다. public class UserException extends Exception{ private int port = 772; public UserException(String msg){ super(msg); // exception 클래스로부터..

JAVA Exception 예외 처리

JAVA Exception 예외 처리 예외 : 프로그램 실행 중 예기치 못한 비정상적인 상황 예외가 나타나게 방치 후 사후 처리를 한다. try~ catch 문에 의해 직접 처리하고, 메서드 호출 측으로 throws를 명시적으로 써준다. Unchecked Exception : RuntimeException 예외처리 선택 ArithmeticException : 0으로 나누는 경우, 논리 적 예외 ArrayIndexOutOfBoundsException : 잘못된 배열 첨자 예외 NegativeArraySizeException : 배열 선언 시 할당 크기가 음수일 때 예외 ClassCastException : 허용 불가능한 형 변환 예외 NullPointerException : null 값을 갖는 참조 변수로..

JAVA interface 인터페이스 abstract class 추상 클래스

JAVA interface 인터페이스 abstract class 추상 클래스 추상 클래스 : 객체 생성 불가능, 참조 변수 선언은 가능 공통점이 있는 객체들에게 어떤 메서드를 강제 구현시키도록 한다. 상속 시 super 클래스로 존재하고, 추상 메서드를 하나 이상 포함시켜야 한다. 그리고 자식 클래스가 인터페이스 구현을 강제하고 몸체를 구현한다. 추상 클래스 정의와 추상 메서드 정의 모두 abstract 키워드로 한다. 추상 메서드를 재정의하면서 오버 라이딩해 클래스마다 구현을 다르게 한다. 하위 클래스 사이에 공통으로 필요한 메서드를 추상 클래스에 추가한다. 같은 이름, 같은 동작 : 일반 메서드에 구현 같은 이름, 다른 동작 : 추상 메서드에 구현 인터페이스 : 다중 상속이 불가능한 JAVA에서 필요..

JAVA 상속과 다형성

JAVA 상속과 다형성 다형성 : 다양한 형태가 존재한다. 단순하게 만들어 준다는 뜻 활용 : 다양한 참조 변수를 가지는 객체의 배열, 여러 종류의 매개변수 받기 업 캐스팅 : 허용 O, 자동으로 형 변환시켜준다 Person P = new UnivStudent(); Person P = (Person)(new UnivStudent()); // 자동 실행 다운 캐스팅 : 허용 X, 업 캐스팅 후 다운 캐스팅만 허용한다 즉, 원래 내 타입으로 돌아오는 것만 허용한다 -instanceof 연산자로 타입 확인하기 -object 클래스는 모든 클래스의 super 클래스로, 모든 객체를 가리킬 수 있다. -자식 객체의 상속받지 않은 멤버에 접근하기 위해서는 반드시 다운 캐스팅되어야 한다. public class Pe..

리눅스 컴파일 실행, 빌드 과정, make 명령

리눅스 컴파일 실행, 빌드 과정, make 명령 컴파일 : 사용자가 사용하는 고급언어(C언어)를 기계어(실행파일)로 변환하는 과정 컴파일러 : 이러한 기능을 하는 소프트웨어 C언어로 작성한 프로그램을 컴파일하려면 CC 컴파일러가 필요하다. 리눅스의 C 컴파일러 : gcc gcc 설치 명령어 : $ sudo apt-get install gcc C 프로그램 작성하기 명령어 : $ vi hello.c 내용 작성 후:wq로 저장 후 종료하기. C 프로그램 컴파일하기 명령어 : $ gcc hello.c (소스 파일명) 실행 파일의 이름은 사용자가 지정하지 않으면 a.out으로 생성 C 프로그램 실행하기 명령어 :./a.out(경로 주의) 실행 파일명 변경하기 : $ gcc –o h..

[ 자료구조 ] level order iterative inorder tree traversal

[ 자료구조 ] level order iterative inorder tree traversal 1. 반복적 중위 탐색(inorder traversal) 알고리즘 트리 탐색을 꼭 순환 알고리즘으로 작성해야 하는 것은 아니다. 아래 예는 중위 탐색 알고리즘을 반복적인 알고리즘으로 작성한 것이다. 각 노드를 방문하면서 과거 노드를 LIFO 순으로 기억해야 하기 때문에 스택을 사용하였다. void iter_inorder(tree_ptr node){ int top = -1; tree_ptr stack[MAX_STACK_SIZE]; while(1){ while(node){ push(&top, node); node = node->left_child; } node = pop(&top); if(!node) break;..

CS/자료구조 2021.11.29

[ 자료구조 ] inorder preorder postorder traversal 탐색 알고리즘

[ 자료구조 ] inorder preorder postorder traversal 탐색 알고리즘 1. 중위 탐색 (inorder traversal) 알고리즘 , 왼나오 중위 탐색 트리 알고리즘은 순환 알고리즘이 간단하다. void inorder(tree_ptr ptr) { if(ptr) { inorder(ptr->left_child); printf(“%d”,ptr->data); inorder(ptr->right_child); } } 2. 전위 탐색 (preorder traversal) , 나왼오 순환 알고리즘이다, 전위 탐색으로 모든 트리를 탐색한다. void inorder(tree_ptr ptr) { if(ptr) { printf(“%d”,ptr->data); inorder(ptr->left_child..

CS/자료구조 2021.11.28

[ 자료구조 ] Tree Linked List로 구현하기 (2)

[ 자료구조 ] Tree Linked List로 구현하기 (2) #include #include struct tnode { int data; struct tnode* left_child; struct tnode* right_child; }; typedef struct tnode node; typedef node* tree_ptr; int main(){ int i; tree_ptr head = NULL, temp = NULL; temp = (tree_ptr)malloc(sizeof(node)); temp->data = 0; temp->left_child = NULL; temp->right_child = NULL; head = temp; tree_ptr head = NULL, temp = NULL; temp..

CS/자료구조 2021.11.27

[ 자료구조 ] Tree Linked List로 구현하기 (1)

[ 자료구조 ] Tree Linked List로 구현하기 (1) #include #include struct tnode{ int data; struct tnode * left_child; struct tnode * right_child; }; typedef struct tnode node; typedef node * tree_ptr; tree_ptr insert(tree_ptr head, int * number){ tree_ptr tnodes[5]; tree_ptr temp = NULL; for(int i = 0; idata = number[i]; tnodes[i]->left_child = tnodes[i]->right_child = NULL; } head = tnodes[0]; tnodes[0]->le..

CS/자료구조 2021.11.26
728x90