본문 바로가기

전체 글388

자바(JAVA) - IS-A관계와 HAS-A 관계 객체 지향의 장점은 코드의 재사용이다. 상속의 구현 (IS-A) 또는 객체의 구성 (HAS-A)를 통해 코드 재사용을 수행할 수 있는 두가지 방법이 있다. IS-A 관계 : 일반화 관계(Generalizaion) => 상속 관계 ~은 ~다. 상속은 is-a 관계에서 사용하는 것이 효율적이다. 상속을 코드 재사용의 개념으로 이해하면 안된다. 상속을 사용하면 클래스간 결합도가 높아져 상위 클래스를 수정해야할 때 하위 클래스에 미치는 영향이 크다. 즉, 의미상 상하 관계가 분명한 객체를 연결하기 위한 수단으로 사용해야한다. 클래스 선언에서 extends 또는 implements 키워드가 있으면 이 클래스는 IS-A 관계가 있다고 한다. 예) 집은 건물이다. 그러나 건물은 집이 아니다. HAS-A관계 : 연관관.. 2023. 7. 7.
자바(JAVA) - 달력 만들기 보호되어 있는 글 입니다. 2023. 7. 7.
자바(JAVA) - 가변인자 (variable arguments) 란 무엇인가? 가변인자란? ... 이 삽입된 메소드의 매개변수 선언을 '가변 인자 선언' 이라고 한다. HTML 삽입 미리보기할 수 없는 소스 위 코드를 보면, Te 클래스 안에 vararg 메소드가 만들어져있고, 매개변수로 ... x 와 같은 방식이 있다. 이를 가변인자라고 부른다. 원래라면 main 메소드에 vararg에 변수 1,2,3,4,5,6을 던져준 것처럼 vararg에는 int x, int y, int z, int k, int j, int o.... 등 이렇게 매개변수를 6개 정의해줘야한다. 이처럼 가변인자를 선언해서 사용하게 되면 전달되는 인자의 수에 제한을 두지 않고 동적으로 사용가능하다. 가변인자를 왜써? 가변인자(...)은 호출 코드의 가독성과 사용편의성을 높일 수 있다. 단, - 가변인자를 사용할.. 2023. 7. 7.
자바(JAVA) - static(클래스)변수와 instance변수, local(지역)변수 HTML 삽입 미리보기할 수 없는 소스 클래스에 선언된 변수는 모두 멤버 변수라고 부른다. 즉, int x와 static int y는 멤버변수라고 할 수 있다. 멤버 변수 중 static이 붙은 것은 클래스 변수, 붙지 않은 변수는 인스턴스 변수이다. 📌 static(클래스)변수 인스턴스 변수 앞에 static만 붙이면 된다. 인스턴스마다 독립적인 저장공간을 갖는 인스턴스 변수와 달리, 클래스 변수는 모든 인스턴스가 공통된 변수(공간)을 공유한다. 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야 하는 속성일 경우, static변수로 선언한다. new를 하지않아도 자동으로 생성된다. 즉, 클래스에 고정된 멤버로, 객체 없이도 사용할 수 있다. ObjectEx4 클래스 HTML 삽입 미리보기할 수 없는.. 2023. 7. 6.
자바(JAVA) - 메소드 (Method) - 3 HTML 삽입 미리보기할 수 없는 소스 이렇게 VariableEx2 클래스를 생성하고, main메소드에서 해당 클래스 객체를 생성후 메소드를 호출하여 print로 찍어보았다. byteValue 메소드는 두개지만, 하나는 오버로딩된 메소드로 매개변수가 같지 않기 때문에, 매개변수로 x, y가 있는 메소드가 호출된다. * 오버로딩 : 같은 이름의 생성자 또는 메소드를 여러 개 선언하는 것을 말한다. v.getAvg(346)을 출력해보면 86.5가 나온다. return 값으로 total/4 를 하게되면 86.0이 되는데, 4.F는 형변환을 통해 int의 크기가 float보다 작으므로 float의 형태로 값을 조회할 수 있다. 2023. 7. 6.
자바(JAVA) - 자료형 변환 (byte, int, long, char, boolean) 연산 HTML 삽입 미리보기할 수 없는 소스 byte (1byte) < short (2byte) < int (4byte) < long (8byte) < float (4byte) < double (8byte) 1. byte 형변환 byte의 크기(Byte.MAX_VALUE)는 127까지이다. 따라서 byteValue1과 byteValue2를 더했을때 128 이상이 되면 쓰레기 값으로 0이 나오게 된다. 연산을 할때도 ( ) 안에 넣어서 연산을 하게 되면 자료형이 맞지 않으므로, 형변환을 해서 연산해주어야한다. 2. 자료형 Int와 Long int는 4바이트, long은 8바이트 이므로, intValue2에서 연산을 할 때 1l 을 써준다면, 연산은 크기가 큰 long의 형태로 하기 때문에 int의 크기를 벗어나.. 2023. 7. 6.
자바(JAVA) - 제네릭(Generic) 제네릭이란? - 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 그렇다면 왜 제네릭을 사용하는 것일까? HTML 삽입 미리보기할 수 없는 소스 위 코드를 줄여 하나의 클래스로 만들어보았다. 하지만, 이렇게 하면 BookTest의 Object 타입 때문에 t1에 들어가는 타입은 Object이다. 그러나, EnglishBook과 MathBook에는 Integer 타입으로 가격을 넣어주어야한다. 어떻게 할 수 있을까? 이런식으로 클래스를 줄이고, 제네릭을 사용하여 T 자리에 클래스를 넣어 코드를 줄여볼 수 있었다. 제네릭 메소드 접근제한자와 리턴값 사이에 꺾새를 주고, 매개변수의 타입을 U로 설정하면 제네릭 메소드가 완성된다. 2023. 7. 6.
자바(JAVA) - 자바의 특징 JAVA(객체지향)는 class 기반으로 이루어진다. class 안에는 속성, 기능(메소드)이 있다. 자바의 특징 🚩객체지향(OOP, Object Oriented Programming language) 상속, 캡슐화(은닉), 다형성, 추상화가 적용된 객체지향 언어. 위 4가지 특징을 활용해 코드의 재사용성을 증가하고, 유지보수를 용이하게 만들 수 있다. OOP : 객체들을 하나씩 조립해서 완성된 프로그램을 만드는 기법 1) 상속 (Inheritance) : 부모 클래스의 변수와 메서드를 자식 클래스가 전부 물려받는 것. 2) 캡슐화 (Encapsulation, Information Hiding) : 객체의 변수 및 메서드를 외부 객체가 함부로 건드리지 못하게 감쌈. 클래스의 getter / setter .. 2023. 7. 6.
자바(JAVA) - 상수(final)의 의미 final 이란? - 무언가를 제한한다는 의미를 가지는 것으로, 변수(variable), 메서드(method), 클래스(class)에 사용가능하다. 이 final 키워드는 어떤 곳에 사용되냐에 따라 다른 의미를 가진다. 메소드를 선언할 때 final 키워드를 붙이면 이 메소드는 최종적인 메소드이므로 오버라이딩할 수 없다. 즉, 부모 클래스를 상속해서 자식 클래스를 선언할 때, 부모 클래스에 선언된 final 메소드는 자식 클래스에서 재정의 불가. 변수(variable) - 변수에 final을 붙이면 이 변수는 수정할 수 없다는 의미이다. 따라서 초기화 값을 필수적으로 기입해야한다. 만약 객체 안의 변수라면 생성자, static 블럭을 통해 초기화까지는 가능하다. 단, 수정할 수 없다는 의미의 범위는 변수.. 2023. 7. 5.
자바(JAVA) - Static의 의미 정적(Static)이란 - 고정된 의미를 갖고 있다. Static이란 키워드를 사용해 Static 변수, Static 메소드를 만들 수 있다. 이를 정적 필드와 정적 메소드라고 하며 이 둘을 합쳐 정적 멤버(클래스 멤버)라고 부른다. 정적 필드와 정적 메소드는 객체에 소속된 멤버가 아니라 클래스에 고정된 멤버이다. 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리된다. 그렇기 때문에 클래스의 로딩이 끝나는 즉시 바로 사용가능하다. 즉, Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다. 일반적으로 우리가 만든 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성된다.. 2023. 7. 5.
정보처리기사 전공자 합격후기 (솔직히 운빨 너무 심함) 정보처리기사... 2020년 2회부터 2023년 1회까지 한번 빼고 모두 시험 응시한 전공자의 합격 후기를 말씀드리겠습니다. 기간이 3년인 만큼, 필기 합격 후 2년간 시험에 붙지 못해서 필기까지 또 합격해야 하는 상황이었습니다. 합격하기 이전의 시험 점수는 처참했습니다. 가장 처참할 정도의 점수를 받았어요...ㅠ 위 사진처럼 56점으로 한번 불합격 후 , 58점으로 또 한번 불합격 한 경험이 있습니다. 의욕이 없어지더라구용.. 물론 열심히 안했?다고는 생각 안하며 나름 열심히 했는데 말이죠 ㅠㅠ 22년 정기 기사 3회 때 필기를 합격 후 사조사랑 같은 날 시험치다보니 공부를 제대로 못했을 때 이날 빼고는 붙을 자신이 있었는데, 늘~~~ 책에 없던 내용이 몇개 나오더라구용 ㅎㅎ ( 아님말고.. ) 그래도.. 2023. 6. 27.
[JavaScript] 화면 캡쳐 라이브러리(html2canvas) https://html2canvas.hertzen.com html2canvas - Screenshots with JavaScript Try out html2canvas Test out html2canvas by rendering the viewport from the current page. Capture html2canvas.hertzen.com html HTML 삽입 미리보기할 수 없는 소스 참고한 소스 코드 html, js 위 코드 두 줄은 캡처를 하기 위한 라이브러리니 추가해주어야 한다. 버튼을 생성하여 screen shot 버튼을 누르게 되면, 오른쪽과 같이 사진이 캡처된다. 다운로드 된 폴더에 들어가 사진을 눌러보면, capture에 감싼 id 태그 모두 사진 png로 저장되어 있는 것을 확인.. 2023. 6. 7.