목록중앙 HTA (2106기) story/java story (28)
날아라쩡글이의 블로그입니다.

싱글톤객체란, DAO에서 Baord의 값을 저장하는 객체가 요청시마다 new를 사용하면, 노트북을 매번 새로 사는 것과 동일하다. 프로그램을 실행하는 동안 존재하면 된다. 그럴때 , 싱글턴객체로 만드는 방법을 사용한다. 프로그램이 실행되는 동안 오직 하나의 객체만 하나만 생성해서 사용하는 객체이다. Singleton Instance방법이다. 1.객체를 생성해서 정적변수에 저장한다. 2.생성자의 접근제한을 private로 설정한다. 3. 1번에서 생성한 객체를 반환하는 정적메소드를 제공한다.

예외처리 예외처리란 프로그램 실행 시 발생할 수 있는 오류에 대비하는 것으로 프로그램의 비정상적인 종료를 막고, 실행상태를 유지하는 것 에러의 종류 에러 (Error) 시스템, JVM의 잘못으로 발생되는 문제 개발자가 해결할 수 있는 문제가 아님 예외처리의 대상이 아님 시스템 관리자나 서버관리자가 확인 후 문제를 고칠 수 있다. 왠만해서는 발생되지 않으며, 치명적인 것이다. 예외 (Exception) 개발자의 코딩실수로 인해서 일어난다. 사용자가 잘 못 사용할 수 있다는 의미로 잘 못 사용하게 되면 원래의 프로그램이 꺼져버리기 때문에 예외처리 메세지를 보낸다. 사용자입장에서는 황당할 수 있기 때문에 꺼지지 않게, 어디에서 문제였는지를 알려준다. 중단되지 않게 하기 위해 에러 메세지를 출력한다. 예외 에러..

추상화 구현부가 없는 것, 구체적인 구현내용을 포함하고 있지 않은 것 구체적인 구현을 각각의 구현클래스(자식클래스)에게 위임하는 것 추상화의 방식 인터페이스 각각의 구현클래스가 반드시 구현할 기능을 정의한다. 인터페이스는 구현클래스들의 표준이 된다. 구현클래스들은 인터페이스에서 정한 표준(접근제한자, 반환타입, 메소드 이름, 매개변수)이 정해진대로 구현한다. 같은 인터페이스를 구현한 모든 구현클래스는 사용방법이 완벽하게 동일하다. 인터페이스는 클래스간의 결합을 느슨하게 유지시킨다. 인터페이스는 동시작업을 가능하게 한다. 인터페이스를 구현하는 클래스의 개발, 인터페이스를 구현한 클래스를 이용하는 클래스의 개발이 동시에 이뤄진다. 인터페이스를 사용하는 이유??? 모든 클래스들이 동일한 개발이 이뤄지게 하고,..

Car라는 인터페이스에는 에는 여러가지 기능이 존재한다. 이러한 Car객체는 이런기능을 가지고 있다. 이러한 기능들로 인터페이스를 구현하게되면 표준안으로 인해서 구현하지 않을 기능까지 전부다 갖게 된다. 단점으로는 구현하지도 않을 메소드를 재정의하게 되고 실제로 이차가 어디까지 구현을 하게 되는지 가독성이 떨어지게 된다. 그렇기 때문에 인터페이스의 기능을 나눠서 구현받게 만들 예정이다. 이것이 인터페이스의 분리의 법칙이다 SOLID의 법칙중의 하나로 하나의 인터페이스를 4가지로 분리하여 하나이상의 인터페이스를 상속박아서 또 다른 표준을 만들었다. 원래대로라면 전체의 기능을 구현했어야했다. 그러나 인터페이스의 기능을 세부적으로 나눠서 다중상속을 진행하여 구현을 받도록 진행하였다. 좀더 쉽게 구현이 가능하게..

인터페이스와 클래스의 관계 클래스는 단일상속이 가능하다. 인터페이스는 다중상속이 가능하다. 클래스와 클래스의 관계는 상속관계이다. 인터페이스와 클래스의 관계는 구현관계이다. 인터페이스와 인터페이스의 관계는 상속관계이다. 클래스와 인터페이스는 구현관계이다. 클래스는 2개이상의 인터페이스를 구현할 수 있다. 클래는 인터페이스를 구현하고, 클래스를 상속받을 수 있다. 인터페이스는 다중상속이 가능하다. 같은 것끼리는 상속관계이고, 나머지는 구현관계이다. 클래스가 인터페이스의 부모가 될 수 없다. 추상클래스 클래스는 총 3가지의 클래스가 있다. 클래스 구현클래스 구현부가 있는 메소드이다. 멤버변수, 정적변수, 생성자, 멤버메소드, 정적메소드가 있다. 인터페이스를 구현한 클래스이다. 추상클래스가 없다. public..

개발할 때 객체지향원칙의 SOLID는 중요한 원칙이다. 개발을 쉽고, 응집도가 높게 결합도가 낮게 이뤄지게 만들어주는 원칙이다. 위의 그림처럼 A와 B의 경우 같은 부모를 가지고 상속을 받지 않기 때문에 A와 B를 서로 전해줄 수 없다. 특징 DatabaseChild와 cloudDatabaseChild의 경우 모두 Parent 타입이다. DatabaseChild객체와 CloudDatabaseChild는 모두 Parent타입의 참조변수로 참조할 수 있다. Parent parent = new DatabaseChild(); Parent parent = new CloudDatabaseChild(); Parent로부터 상속받은 메소드를 전부 재정의 했기 때문에 사용법이 동일하다. DatabaseChild와 Clo..

상속의 경우 물려받은 것 이상으로의 효과가 있다. 언제 사용을 할까? 상속의 첫번째 목적 코드의 중복을 제거하였다. 하위클래스를 빠르게 개발할 수 있다. 클래스의 재사용성이 높아 졌다. 생산성 및 유지보수성이 높아졌다. 상속의 두번째 목적 하위클래스에 비슷한 기능이 많을 때 상속과 메소드의 재정의는 하위클래스가 비슷한 기능을 가지고 있을 때 상위클래스로부터 재상속 받은 기능을 여러 하위클래스에서 재정의 했을 때 해당기능을 클래스에 상관없이 같은 방법으로 사용할 수 있게 되었을 때 (같은 이름을 사용하니까 ) 클래스 형변환을 적용하면 다향성을 발현 시킬 수 있을 때 클래스란 -정보를 저장하고, 정보를 전달하는 객체를 생성하기 위한 클래스가 존재한다. Person, Student, Proffessor, Em..

클래스 형변환 활용하기 1. 부모타입의 참조변수로 모든 자식객체를 참조할 수 있다. (강제형변환사용시!) 상속관계에 있는 (상위 객체 -하위객체 )관계에 있는 객체사이에서만 클래스 형변환이 가능하다. 하위 객체를 상위 클래스 타입의 참조변수로 참조하는 것이 클래스 형변환이다. 클래스 형변환 없이 객체를 참조하는 경우는 상위객체의 공개된 모든 속성 및 기능을 사용할 수 있고, 자기 자신의 공개된 모든 속성 및 기능을 사용할 수 있다. Object 타입의 참조변수는 자바의 모든객체 (배열을 포함한 )를 참조할 수 있다. 상위클래스 타입의 객체를 하위클래스 타입의 참조변수로 참조하는 것은 절대 불가능하다. 생성된 객체와 참조변수의 타입이 상속관계가 아닌 경우도 클래스 형변환이 절대 불가능하다. 클래스 형변환은..

상위클래스로부터 상속받은 메소드의 내용을 재정의 하는 것이다. 상속관계에 있는 상위 클래스로부터 상속받은 메소드를 하위클래스에서 그대로 사용하지 않고, 하위클래스에 맞게 내용을 변경하는 것이다.(메소드의 내용을 재정의하는 것) 이클립스 무료 플로그인 설치 방법 -> 1. 마켓플레이스에서 다운받는다.-> popular에서 오픈 소스코드를 얻을 수 있다. Spring, web개발, sonarLint6.1이라는 소스코드에 대한 품질 검사를 하는 것 2.help의 install을 이용하여 다운받는다. 2번을 이용하여 Amateras Modeler 사이트를 입력하여 다운받는다. Amateras ERD, Amateras UML을 확인 할 수 있다. ERD의 경우 entity relation Diagram의 뜻으로 ..

배열에 주소값을 담는 경우 방법이 2 가지가 있다. new연산자를 이용하여 객체의 주소값을 담는 참조변수를 만들어서 호출하는 방법 배열의 각 칸에 학생정보를 저장하여 바로 생성자를 입력하여 연결되게 만드는 방법이 있다. 2번의 방법같은 경우 불필요하게 Student의 변수를 만들지 않아도 된다. 자바 프로그램의 경우 에러가 날 경우 프로 그램이 아예 중단이 된다. null포인트오류시 if문을 이용하여 if(score != null)을 이용하여 null값이 아닌 것들만 출력이 가능하게 할 수 있다. 나중에는 예외 던지기 방식을 이용하여 회피하는 방법으로 진행될 수 있다. 객체의 경우 엄청난 데이터로 이뤄지고 있고, 설계되고 사용하기 때문에 객체의 양이 많다. 그렇기 때문에 접근제한자에서 작성한 것처럼 Sy..

객체는 구성요소가 필드, 생성자, 메소드로 구성이 되어있다. 객체내의 구성요소에서 맴버의 접근을 제한하기 위해 접근제한을 설정할 수 있다. 그것이 접근제한자이다. 구분 공개 부분 접근 불가능 public 같은 클래스내에서 접근가능 없음 protected 패키지 공개 + 자식클래스 공개 다른 패키지 default 패키지 공개 자식 패키지 + 다른 패키지 private 같은 클래스 공개 다른 패키지, 다른 클래스 어떤 접근 제한자를 붙이느냐에 따라서 접근이 가능한지 정해진다. public 의 경우 전부 공개, 완전 공개를 의미한다. protected의 경우 다른 패캐키지지만 이것을 상속받은 애의 자식 클래스면 가능하다. --> 자식 extected 부모 default(아무것도 적지않음) 의 경우 패키지 공개..

value object / Data Transfer Object public class Student { --->정보를 담고있는 클래스 :value Object / Data Transfer Object int no; String name; Stirng dept; int grade; String proffessor; } 필드 : 데이터만 담고있는 클래스로, 정보를 저장하는게 목적인 클래스이다. entity, domain Object, Java bean처럼 객체라는 다양한 이름을 가지고 있다. public class StudentService { --->기능을 담고 있는 클래스 : Service Object라고 불리운다. void addnewStudent (Student student) {...} Stude..

생성자는 메소드이다. 생성자는 클래스의 이름과 동일한 이름을 가진 메소드이다. 생성자 메소드는 반환타입이 없다 public class Simple{ void plus(int x , int y){...} //반환값이 없고, 매개변수 int x, int y가 있는 맴버메소드 plus int getRandomNumber ( ) {..} //반환값이 int인 매개변수가 없는 맴버메소드 getRandomNumber Simple(){ } Simple 생성자 메소드 } 맴버메소드의 사용 Simple simple = new Simple(); //객체를 생성하고 주소값을 참조변수에 대입한다. sample.plus(100,200); //객체생성후 참조변수를 이용해서 실행시킬 수 있는 멤버메소드를 실행시킨다. sample...

package 를 동일하게 작성하기 원한다면 , package에 오른쪽 버튼을 누르고 refactor ->rename -> 이름변경을 누르면 됨 method (메소드) 이름을 가진 수행문의 블록이다. 객체의 고유한 기능을 담당한다. 예를 들면 String전용의 객체가 존재하는 것이다. 고유한 기능을 가지고 있는 데, 대문자에서 소문자, 특정문자 찾기, 어떤글자들이 존재하는지 체크하는 기능, 어떤 글자를 포함하는 글자를 출력하는 기능, 다른 글자로 변경하는 기능, ~ 으로 시작하고 ~ 으로 끝나는 문자열을 출력하는 기능 문자열을 비교하는 기능 문자열에 관련한 기능을 출력할 수 있고, String에 포함한다. Date라는 날짜와 시간에 대한 정보를 출력할 수 있는 객체가 존재한다. 고유한 기능으로써 현재시간..

객체 지향 언어 프로그래밍에서는 생소한 단어들이 많이 나올 예정이다. 객체 지향 프로그래밍이라는 것은 객체를 만들고 조립하여 시스템을 만드는 것이다. 프로그램, 즉 카메라라는 물건을 만들게 되면 한덩어이르이 장치가 아닌 카메라, 디스플레이, 연산처리등 여러가지 부품들이 필요하다는 사실을 할 수있다. 하나의 어플리케이션을 만드는 것도 마찬가지로 여러개의 부품을 만들어서 조립한다고 할 수 있다. 개별 부품들은 객체라고 부른다. 객체를 가르키는 말로 컴포넌트 , 모듈이라는 단어가 있다. 용어를 떠나서 객체를 여러가지로 모아서 소프트 웨어를 만드는데 이렇게 만든 객체를 합치기 위해서는 설계도가 필요하다. 그 설계도의 이름은 클래스라고 한다. 설계도를 만들고, 메모리안에 만들어 놓은 것을 객체라고 하며, 메모리내..

자바는 객체 단위로 많이 사용함, 머리속에 그려져야한다. 객체들이 어떻게 조립되어있는지 파악하는 것이 중요 절차지향 ---> 그 기능이 있는 메소드만 기억하여 사용, 메뉴판을 선택 객체지향 ---> 그 서비스를 만들기 위한 그 기능이 있는 객체를 만들어서 사용함, 그 메뉴판을 사서 직접 만들어서 사용 객체 생성시에는 index의 번호가 자동으로 부여된다. 대입연산자를 이용하여 값을 입력한다 ---> 대입연산자를 이용하여 값을 변경한다. 값을 사용한다. System.out.println(score[0])---> 값을 불러와서 사용하는 것 int [] a = new int[4];를 for문에 넣을때 for (int i = 0; i 클론 , ; -> 세미클론 System.out.println(새변수명); } ..

배열을 사용할 때에는 한번에 쭉 처리한다. 한개씩 꺼내서 처리한다. 일단, 첨부터 끝까지 꺼내서 사용을 한다. 중간에 건너뛰는 작업은 하지 않는데 ---> 그 이유는 애초에 사용할 값은 따로 담지 않기 때문이다. 우리의 목적은 담아둔 데이터를 처음부터 끝까지 뽑아내는게 목적이다. 나중에는 for문의 (초기, 증감식)은 사용하지 않는다. 값을 저장하는 방법 변수를 만들어서 변수에 저장한다. 변수에는 1개밖에 저장을 못한다. 변수를 저장하는 저장소를 만들어서 그 저장소를 이용하여 대용량의 정보를 이용한다.(배열) 배열(Array) 배열은 여러 개의 데이터를 저장할 수 있다. 배열을 이용하면 하나의 변수명으로 여러개의 데이터를 관리할 수 있다. 배열은 순서대로 번호(인덱스) 가 붙은 요소들이 연속적인 형태로 ..

내포된 if문 if문 내에 다른 if문이 포함됨 if (조건식 1) { //조건식 1이 true로 판정되면 블록내의 수행문이 실행된다 if (조건식2) { //조건식 1이 true로 판정되고, 조건식 2도 true로 판정되면 블록내의 수행문이 실행된다. } else { //조건식 1이 true로 판정되고, 조건식 2는 false로 판정되면 블록내의 수행문이 실행된다. }} 내포된 if가 많아질수록 깊이가 더욱 깊어짐 --->프로그램의 복잡도가 높아짐 if내의 if내의 if문의 경우 꼭 필요시에만 작성해야한다. 내포된게 많을수록 복잡도가 올라가고, 가독성이 떨어진다. 그러나 어떤 경우에 실행되는지 파악하기는 쉽다. 코딩을 할 때에는 실패한 경우를 먼저 찾는게 좋다. 코드가 더욱 간단해지기 때문이다. swi..

현재까지 공부한 부분은 순차적으로 실행하는 수행문들의 집합이라고 부를 수 있다. 그러나 이제 조건식이 들어가 약간의 변형이 들어가는 방식으로 진행될 예정이다. 조건식은 갈라지기 때문에 분기문이라고 부르기로 정하였다. if문은 블록내에 작성하지 않아도 작동에는 상관없지만, 블록내에 작성을 해야한다. 수행문 1개인 경우에는 생략을 하지만, 권장하지 않음으로 전부 입력해주는 편이 좋다. if문 제어문을 작성할 때 사용한다. 특정한 수행문을 실행되게 하거나 실행되지 않게 할 수 있다. 수행문의 실행여부를 결정지을 조건식이 필요하다. if문의 조건식은 수행결과가 boolean값인 연산식이어야한다. if (조건식) { // 자바의 coding Guide로 if 적고 한칸씩 띄어서 작성해야한다. //조건식이 true..

대입연산자 연산자 우선순위가 가장 낮은 연산자이다. = 은 변수에 값을 대입한다는 의미로 int num = 10;이후 num = 5;을 적게 되면 num이라는 숫자가 5로 바뀌어 대입한다는 의미로 들어간다. 즉, 변수의 값을 새로운 값으로 변경한다는 의미이다. 자바스트립트와 다른 프로그래밍 언어의 경우 동사적인 사고방식을 가지고 있고, 자바의 경우 명사적인 사고를 가지고 있다. 즉, 점수, 총점, 평균 ---> 값(result)의 값을 구해야하는 사고방식을 가지고 있는것이다. 증감연산자 : 값을 다룰때 , 한번에 여러개의 값을 다룰때 사용을 한다. 증감 연산자의 경우 변수의 값을 1증가 시키거나 1감소를 시킬 때 사용을 한다. 단항 연산자로 앞이나 뒤로 적을 때 1씩 증가, 감소가 될 때 사용을 한다. ..