본문 바로가기

자바/정리

(28)
(JAVA) Object 클래스 equals() 우리는 클래스와 메서드에 대해서 이미 학습을 하였다. 간단히 이들에 대해서 다시 한번 생각해보자. 자바에서 기본으로 제공하는 클래스들이 있었다 예를들어 math,System 혹은 Arrays 같은 클래스들 말이다. 해당 클래스들 안에는 메서드들이 정의되어 있다. 예를들어 math.abs()를 사용하면 math 클래스 내부에 있는 abs() 사용하여 절대값을 출력하게 되며, math.random()을 사용하면 랜덤 값을 얻을수 있었다. 이렇게 수많은 클래스들이 사용자의 편의를 위해 미리 정의되어 있으며 추가로 지금 까지 우리가 필요하면 클래스를 직접 정의해서 사용하곤 하였다. 이야기가 다소 길어졌지만 사실 모든 클래스는 숨김처리 되어있지만 Object 라는 클래스를 extends Object 하여 이미 상..
(JAVA) 예외 코딩을 하다 보면 코드를 잘 못 짜서 에러가 발생하고 빨간 글씨 뜨며 프로그램이 멈추는걸 본적 있을것이다. 하지만 오류가 out of memory 같은 프로그램 실행 자체에 영향을 주는것이 아닌, 작은 오류 라면 그걸 자바는 예외 라고 부르기로 했다. 즉 에러(Error)는 컴파일,런타임 에러 같은 프로그램의 자체적인 문제. 그것이 아닌 우리가 해결할수 있는 범주에 있는 오류는 예외(exception) 라고 부른다. 컴퓨터 혹은 휴대폰에 있는 계산기를 실행 시켜보자 어떤 값을 입력하고 0으로 나누어 보자. 뭐라고 뜨는가? 상식적으로 수는 0으로 나눌수가 없다. 그건 계산기를 쓰는 사람들이 알아야할 법칙이다. 하지만 입력한다면 프로그램마다 다르겠지만 대부분 0으로 나눌수 없습니다 라고 개발자가 사전에 작성..
(JAVA)다형성 다형성 사전적 의미를 보면... 다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미합니다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있습니다. 역시 사전이 하는 소리는 한번에 이해하기가 힘들다. 다형성 말만 보면 다는 다수에다가...음... 형은 형태인것 같은데....? 성은.... 잘 모르겠네... 아마 견디는건가...견딜성? 그렇다 다양한 형태가 다형성이다 뭐 어렵게 생각할것 없다. 우리가 추상화를 배울때 부모는 이름만 만들고(선언부) 기능은 자식이 싹다 만드는(구현부) 형태인것을 확인해 봤다. 그리고 인스턴스화를 시키는 법도 잘 알것이다. 예시) child c1 = new chi..
(JAVA)인터페이스 음식을 생각해보자. 음식에는 한국 음식 일본 음식 이탈리아 음식 등등 많을 것이다. 예시가 이상 할 수 있겠지만 각 나라별 음식 메서드를 추가 할 때, 공통적으로 해당 국가의 식당의 갯수를 반드시 포함 해야 한다고 가정해 보자. 추상화를 쓰면 해결할 수 있을것이다. https://acid7937.tistory.com/24 그런데 한국음식 일본음식 이탈리아음식을 봤을때... 뭔가... 한국음식이랑 일본음식을 젓가락 쓰는 식문화권으로 따로 묶어버리고 싶다. 그럼 이때 어떻게 묶어버릴까? 이때 사용하는게 인터페이스 이다. (추상화랑 이때 갈린다.) 바로 코드를 살펴보자. abstract class food{ abstract void Numberofrestaurants(); } class koreanfood e..
(JAVA) 추상화 이번에는 추상화에 대해서 알아볼 것이다. 추상화라는 단어를 생각해보자 뭔가 애매한 느낌인가 싶지 않은가? 사실 그렇다. 추상화는 부모가 구현을 하지 않고, 부모가 이런게 있어..선언부만 작성하고 자식에게 던진다 (이번에는 가난한 상속인가 ㅠㅠ) 이렇게만 말하면 뭔 말인지 모를것이다. 이럴때는 코드와 설명이 최고지! (바로 아래 설명으로 가자) abstract class buy{ abstract void fruit(int f1, int f2); abstract void confectionery (int c1,int c2); abstract void gohome(); } class person1 extends buy{ @Override public void fruit(int f1, int f2) { Syst..
(JAVA)캡슐화 (getter와 setter) 날짜 입력 프로그램이 있다고 가정해보자 사용자가 날짜를 입력 할 때 우리는 어.. 오늘은 xxxx년 xx월 xx일 이라고 입력할 것이다. 그런데 만약 개발자가 외부로 부터의 데이터 보호 라는 이유로 일부 항목을 private으로 막는다고 생각해보자. 이것 때문에 우리는 접근제어자를 배웠었다. --------------------------------------------------------------------------------------------------------------------------------------- 그런데 접근제어자로 막아버리면 입/출력은 어떻게 진행시킬까 하는 의문이 들것이다. 캡슐화는 유지하면서 입출력만 따로 시켜줄때 필요한 것이 getter와 setter 이다. 이번..
(JAVA)캡슐화 (접근제어자) 우리가 식당에서 밥을 주문한다고 상상해 보자. 우리는 자리에 앉은뒤에 서버에게 원하는 메뉴를 고르고 서버는 주방에 알린뒤 음식을 가지고 나올것이다. 당연하지만 생각해보면 주방에서 음식을 줄때 식당의 비법이 담긴 레시피를 손님들에게 공개하며 음식을 주지는 않을것이다. 프로그램도 마찬가지 이다. 우리가 네이버에 로그인을 할때 우리의 데이터 베이스를 우리가 직접 찾아서 아이디와 비밀번호의 일치 여부를 확인하지 않을 것이다. 이렇게 프로그램이 실제 구연하는 내용을 은닉 하는 행위를 캡슐로 감싼것에 비유하여 캡슐화 라고 한다. 이번 포스트 에서는 객체지향에서 중요한 개념인 캡슐화를 이해하는 시간을 가져볼 것이다. 캡슐 하면 어떤 이미지가 떠오르는가? 이런 이미지가 떠오를 것이다. 캡슐화를 하여 분리는 하는 이유는..
(JAVA)객체지향 객체지향... 객체... 이게다 무슨 소리인가 싶다. 사전적 뜻을 먼저 살펴보자. 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 시간을 길게 두고 찾아보았다. 나는 객체는 무엇이다. 라고 정의한 정보를 찾기가 다소 어려웠다. 깊게 알아보니 아직도 객체라는 정의에 대해서 여러 사람들 간에 논의가 많다고 한다. 비슷한 비유와 설명들을 모아보면 1.데이터와 기능을 모은 컴퓨터의 자원의 묶음을 객체라고 한다. 2..