프로그래밍/Java 정리 16

객체 지향 프로그래밍(OOP)

| 본문을 시작하기 전.. 객체지향 프로그래밍이란.. 자바 개발자에게 꼭 알아야 할 중요한 개념이다. 그러나 막상 객체지향 프로그래밍이 뭘까요? 라고 물어본다면.. 추상화를 통해 객체를 만들어서 프로그래밍하는것..? 이라고 밖에 떠오르지 않는다. 객체지향 프로그래밍은 개발을 하면서 부족한 점을 개선하려보니 탄생한 프로그래밍 패러다임이다. 그래서 나는 이번 포스팅에서 이전의 프로그래밍 몇가지에 대해서 먼저 이야기 해보고자 한다. | 순차적(비구조적) 프로그래밍 : 정의한 기능의 흐름에 따라 순서대로 동작을 추가하며 프로그램을 완성하는 방식이다. 간단한 프로그램의 경우, 이렇게 코드를 짜게 되면 흐름이 눈으로 보이기 때문에 매우 직관적일것이다. 그러나 프로그램의 규모가 커진다면 곤란해진다. A > B > C..

Java 14일차 - Thread, 파일 입출력

>Thread(쓰레드) >>프로세스 - 실행된 프로그램 - 운영체제로부터 시스템 자원을 할당받는 작업의 단위 : 자바 프로그램은 운영체제 대신 JVM에 의해 자원을 할당받는다. >>쓰레드 -프로세스의 특정한 수행 경로/프로그램의 처리 경로 /프로그램의 흐름 (main메소드가 실행되면 main thread가생성되고 직접 안에있는 내용을 처리해준다) -쓰레드는 단일 쓰레드와 멀티 쓰레드가 있다. >>멀티 쓰레드 -하나의 프로세스를 동시에 처리하는 것처럼 보이지만 사실은 매우 짧은 당위로 분할해서 차례대로 처리한다. : 여러개의 경로를 가질 수 있게 한다. :한개의 처리경로를 여러개로 나누어 동시 작업이 가능해진다. -웹 페이지(JSP)가 대표적인 멀티 쓰레드 응용 프로그램이다. 1. 효율성 증가 2. 처리량..

Java 13일차 - Collection Framework

>컬렉션 프레임워크(Collection Framework) -많은 데이터들을 쉽고 효과적으로 관리할 수 있는 표준화된 방법을 제공하는 클래스 및 인터페이스의 집합 : 자료구조의 일종 Collection(I) List(I) Set(I) ArrayList -Array는 배열 이라는 뜻이고 List는 원소들의 나열된 묶음이다. -ArrayList는 배열을 이용해서 원소들을 나열해 묶는 클래스이다. -컬렉션 클래스들 중 가장 많이 사용되는 클래스이다. :인덱스를 이용해서 배열 요소에 빠르게 접근 가능하지만 크기를 늘리기 위해서(요소를 추가할 때) 새로운 배열을 생성하고 기존의 값들을 옮겨야 하므로 느리다. :배열은 처음에 몇칸을 할당할지 고정해야 했지만, ArrayList는 값을 넣는 만큼 자동으로 늘어난다. ..

Java 12일차 -Object, Wrapper,Generic class

>Object 클래스 -모든 클래스들의 최상위 클래스 ToString() :객체 출력시 나올 문자열 정의(객체에 대해 설명하는 문자열) 시작하기전에 우리가 매일 쓰는 System.out.println(); 매소드를 아는가? 우리 선배님들이 이 메소드를 선언할 때는 후에 어떤것을 이 메소드를 이용해서 출력할지 알 수 없었기 때문에 println 안에는 object타입의 매개변수가 선언되도록 만들어주셨다. 그래서 이 뜻은 아무거나 객체 하나 넘겨라 라는 뜻이다. 또한 println은 외부에서 어떤 객체를 선언하게 되면 내부에서 그 객체.toString()을 사용해서 출력한다. :toString을 붙여서 출력하게 되면 tostring을 사용한 부분 통째로 문자열이므로 단순한 문자열 출력이다 부모클래스(obje..

Java 11일차 -익명 클래스, 예외처리

>익명 클래스(anonymous inner class) 이름이 없는 클래스 클래스 객체명 = new 클래스() { }; 그러면 형변환해서 사용할 수 있지않나..?!!! but, 형변환할때 클래스의 이름이 필요하다. 근데 익명클래스는 이름이 없다. 그러므로 다운캐스팅이 불가능하다. 1.익명메소드의 예 2.익명클래스로 인터페이스를 호출하는 방법 --------------------------------------------------------------------------------------------------------------------------------->예외처리 에러 : 심각한 오류 예외 : 덜 심각한 오류, 개발자들이 일부러 발생시키는 예외이다. syso(10/0) 출력하면 어떻게 나올..

Java 10일차 - 추상,내부 클래스

>접근 권한 제어자 :다른 패키지 혹은 다른 클래스에서 해당 필드에 접근할 수 있는 권한을 제어해주는, 설정해주는 키워드들 -종류 (default) :다른 패키지에서 접근 불가 when? 확실하게 같은 패키지에서만 이용할 때, 귀찮을 때 public :모든 곳에서 접근 가능 when? 모든곳에서 자유롭게 접근이 가능해야하는 필드들 (데이터를 처리하고 기능을 담당하는 메소드들) private :다른 클래스, 다른 패키지에서 접근 불가 when? 데이터를 담는 변수들 (게시글 제목,회원 아이디,...) protected :다른 패키지에서 접근 불가/ 단 자식은 자신의 필드처럼 접근 가능 when? 상속이 목적(자식 클래스들이 오버라이딩 해서 써야하는 메소드) **private 필드는 직접 접근할 방법이 하나..

Java 9일차 -Up casting, Down casting

>업 캐스팅(Up Casting) -자식 타입의 객체를 부모 타입의 객체로 변환 : 부모 타입의 객체에 자식 클래스의 필드를 담아주는 것 ex) SuperCar supercar = new SuperCar(); Car car = supercar; - 부모 타입의 객체에 자식 생성자를 호출 ex) Car car = new SuperCar(); -부모 타입의 매개변수에 자식 객체를 넘기는 것 ex) void f( Car car ){ } f( new SuperCar( ) ); --->업 캐스팅 된 객체는 자식 클래스에서 추가한 내용을 사용할 수 없다. 단, 오버라이딩 된 메소드는 사용 가능하다. >다운 캐스팅(Down casting) -업 캐스팅된 객체를 다시 자식타입으로 바꾸는 것 -업 캐스팅 시 잘려나갔던 ..

Java 8일차 -클래스 배열, 상속

>클래스 배열 -객체를 여러개 선언해야 하는 경우 배열 타입으로 한번에 선언 후 사용 -각 객체는 규칙성이 없기 때문에 규칙성을 부여하기 위해서 사용 (한칸 한칸이 하나의 객체) ex)자동차라는 클래스(추상적인것)을 이용하여 여러가지 차를 객체화 시켜주고 싶은 경우 Car car0 = new Car("Ferrari", "Red", 65000); Car car1 = new Car("K7", "White", 7000); Car car2= new Car(28000); ↑위를 보면 보라색부분이 계속 겹쳐진다. 답답하지 않나? 저 반복적인것을 어떻게 묶지? 이 때 우리가 떠올릴 수 있는것은 배열이다. 변수처럼 클래스도 똑같이 배열을 만들 수 있다. Car[] garage = { new Car("Ferrari", ..

Java 7일차 -클래스

>storage Class(저장 기억 부류) 지역 변수 : 메소드 내부에 선언된 변수// 갈색 (매개변수도 지역변수의 일종) 전역 변수 : 클래스 내부에, 메소드 바깥에 선언된 변수// 파란색 정적 변수 : static이 붙은 변수 // 살짝 기울어짐 지역 변수 전역 변수 정적 변수 초기화 직접 자동 자동 생명주기 } 프로그램 종료시 프로그램 종료시 접근성 하 중 상 지역변수는 초기화를 직접 하지 않으면 오류가 생긴다. 또한 중괄호 안에서만 유효하며 나가게 되면 초기화가 된다. 그러므로 접근성이 가장 낮다. 두 번째는 전역 변수인데 초기화를 컴퓨터가 자동으로 해줘서 우리가 할 필요가 없다. 또한 큰 특징이 전역 변수라서 메서드 안에서 사용이 가능하지만 정적 메소드(static 메소드) 안에서는 사용할 수..