본문 바로가기

프로그래밍 언어 기초/JAVA

(14)
Chapter 14. 예외(Exception) 처리 14. 1. 예외(Exception)란? 프로그램이 어떤 원인에 의해 오동작하거나 비정상으로 종료되는 경우를 예외(Exception)라고 합니다. 예외(Exception)는 에러(Error)와 구분되는데, 에러(Error)란 메모리 부족, stack overflow와 같이 발생하면 복구할 수 없어서 디버깅이 필요한 상황을 일컫는 말이고, 예외(Exception)는 네트워크 끊김, 파일을 읽어오는 데 실패하는 경우 등 에러보다 비교적 가벼운 사안으로 프로그래밍 코드에 의해 수습될 수 있는 상황을 말합니다. 자바에서 예외는 Throwable 클래스를 상속받습니다. 형제 클래스로써 Error 클래스가 있으며 Error 클래스를 상속받는 클래스들을 Error 계열, Exception을 상속받는 클래스를 Exce..
Chapter 13. 다형성(Polymorphism) 13. 다형성이란(Polymorphism)? 자바에서 데이터는 자료형을 통해 객체로 생성될 수 있습니다. 이러한 객체는 기본적으로는 한가지 자료형에 종속되는데요. 하지만 객체지향 프로그래밍을 추구하는 자바에서는 부모 클래스를 상속하거나 인터페이스를 상속받으면 자기 자신만을 자료형으로 하는 게 아니라 부모 클래스나 인터페이스를 자료형으로 하여 객체를 상속할 수 있습니다. 이러한 원리로 인해 자바 내의 모든 reference type의 객체들은 최상위 클래스인 Object를 자료형으로 하여 선언할 수 있는 것입니다. 자바에선 이렇게 하나의 객체가 여러 자료형으로 참조하여 객체를 생성할 수 있는 것을 다형성(Polymorphism)이라고 합니다. 부모 클래스의 선언 public abstract class An..
Chapter 12. 제네릭(Generic) 12. 1. 제네릭(Generic)이란? 제네릭은 데이터의 타입 즉 자료형(Data Type)과 관련이 있습니다. Chapter 1.에서 자료형은 데이터(자료, Data)를 식별하기 위한 분류라고 했습니다. 그런데, 자료형은 변수라는 상자에 어떤 데이터를 담을 것인지 미리 선언하는 것인데, 앞으로 담을 데이터의 자료형을 알 수 없다면 어떨까요? 혹은 대응해야 할 자료형이 여러 가지라서 어디서나 보편적으로 쓸 수 있는 코드를 작성하고 싶다면 어떨까요? 이럴 때 사용할 수 있는 것이 바로 제네릭(Generic)입니다. https://1-hee.tistory.com/2 chapter 1. 자바 변수와 연산자 그리고 메서드 1.1. 변수(Variable)이란? 컴퓨터 메모리에 자료(Data)를 저장하기 위한 공..
Chapter 11. 인터페이스(Interface) 11. 1. 인터페이스(Inteface)란? 인터페이스(Inteface)는 무엇일까요? 표준국어대사전에서 그 의미를 찾아보면 아래와 같습니다. 쉽게 이해하려고 사전을 펼쳐 보았지만, 정의가 어려워서 더 이해가 되지 않는 것 같습니다. 인터페이스의 쉬운 사례를 생각해보면 UI라는 단어를 생각해보시면 될 것 같습니다. UI는 User Interface라는 단어의 약자이죠. 어라? 여기에도 Interface라는 단어가 있네요. 그런데, 우리가 UI라고 한다면 어떤 것이 떠오르시나요? 예쁘게 잘 만들어진 버튼이나 글씨들 화려한 애니메이션으로 사용자의 시선을 뺏는 웹사이트 등이 생각나지 않으신가요? 네 맞습니다. 이것들 또한 인터페이스의 일종으로 여기서 유추해보자면 인터페이스는 사용자와 컴퓨터를 이어주는 버튼 같..
Chapter 10. 추상클래스(Abstract class) 10. 1. 추상클래스(Abstract class)란? 자바에서 일반 클래스는 필드와 메소드 구성되어 있습니다. 그런데 지난 챕터에서 언급한 객체지향 프로그래밍에 대해서 잠시 생각을 해보자면, 반복된 코드를 줄이고 기존에 작성된 코드를 재활용해서 사용할 수 있는 방법으로 상속(Inheritance)이 있었습니다. 그런데, 상속의 단점은 부모 클래스에서 작성한 그대로 사용해야 한다는 것입니다. 그렇다면, 방법은 한가지, 메소드를 재정의 하는 오버라이딩(Overriding)을 사용하면 되지 않을까요? 그런데, Overriding을 그대로 사용하기에는 귀찮은 점이 하나가 아닙니다. 어노테이션이 있다고 하더라도, 접근 제한자도 알아야 하고 리턴타입은 뭔지 함수명은 뭐였는지 일일이 찾는다면 얼마나 번거로울까요? ..
Chapter 9. 객체지향 프로그래밍(OOP, Object-Oriented Programming) 9.1. 객체지향 프로그래밍이란? 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 쉽게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점이 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다..
Chapter 8. 접근 제한자(Access Modifier)와 싱글턴 패턴(Singleton Pattern) 8. 1. 접근 제한자(Access Modifier)란? 몇 개월에 걸쳐 열심히 만들어낸 음원을 다른 사람이 도용해서 쓴다면 정말 화가 나겠죠. 이러한 사태를 방지하기 위해 저작권이라는 권리가 존재하는 것처럼 개발자가 열심히 만든 자바 소스 코드를 다른 사람이 함부로 동의 없이 사용하거나, 삭제 또는 망가뜨리는 행위를 하게 된다면 프로그래밍 생태계는 그야말로 무법지대가 되어버릴 것입니다. 이처럼 내가 작성한 코드 또는 다른 개발자가 작성한 코드를 어느 수준까지 사용 또는 편집하는 것을 허용할지 구체적으로 가이드를 제시하는 데 사용하는 것이 바로 접근 제한자입니다. 접근제한자는 객체지향 프로그래밍의 4대 원칙 중 하나인 캡슐화와 연관이 있는 개념입니다. 캡슐화란 ‘객체의 속성(data fields)과 행위..
Chaper 7. 패키지(Package)와 import 7. 패키지(Package)란? 전문 프로그래머가 아니더라도 컴퓨터를 사용해본 일반인이라도 컴퓨터에 파일을 어떻게 저장하는지는 알고 계실 것입니다. 보통 바탕화면에 저장하거나 혹은 C드라이브에 별도의 폴더를 만들어서 그곳에 저장하는 것이 일반적이죠. 요즘은 클라우드 저장소도 있긴 하지만요! 이와 같이 어떤 파일과 같은 데이터가 저장된 경로는 디렉토리(Directory)라고 부릅니다. 우리나라로 비유하면 도로명 주소나 지번 주소에 해당한다고 볼 수 있습니다. 자바에서도 마찬가지로 확장자가 .java인 파일을 특정 경로에 저장하여 관리하게 되는데요, 이 때 이러한 자바 클래스들을 모아 놓은 디렉토리를 자바에서는 특별히 패키지(Package)라고 부르게 됩니다. 이 패키지는 C\local\mydata 와 같은..