[JavaScript] Set : 중복 제거와 효율적인 데이터 관리
·
Language/Java Script
Reference👉🏻 DaleSeo 블로그👉🏻 모던 자바스크립트 딥다이브 도서   Set 객체는 중복되지 않는 유일한 값들의 집합을 다루는 자료구조예요. Set을 활용하면 데이터 중복을 제거하고 유일한 값들을 효과적으로 관리할 수 있습니다. 배열과 유사하지만 다른 차이도 존재합니다. Set은 자바스크립트 ES6부터 추가된 기능이라 Set을 쓰면 효율적인 코드를 짤 수 있는 상황에도 배열을 사용하는 경우가 있다고 해요. 배열과 Set의 차이를 살펴보자면, 배열은 데이터를 순서있게 저장합니다. 인덱스(index)를 통해서 특정 위치에 저장되어 있는 데이터에 접근이 가능해요. 값이 동일하더라도 인덱스가 틀리기 때문에 데이터의 중복이 문제되지 않아 동일한 값을 여러 번 저장할 수 있습니다.   세트는 얼..
[JavaSrcipt] 루프 최적화를 통한 성능 최적화
·
Language/Java Script
다음은 레시피 등록에서 재료를 추가하는 기능입니다.selectBox에서 값을 선택할 때 마다 재료에 해당하는 단위가 바뀌고, 상태배열 selects에 선택한 값을 추가합니다. 기존 코드const upDateIngredient = (e, index) => { const ingredientId = e.target.value; const ingredientName = e.target.options[e.target.selectedIndex].textContent; let ingredientUnit = ""; // 기존 상태배열에 중복 데이터가 존재하는지 검사 for(let i = 0; i select.index !== index)); //삭제 alert('이미 존재하는..
[Java] 내부 클래스(Inner Class)
·
Language/Java
들어가기 전에.. 내부 클래스는 클래스 내에 선언된다는 점을 제외하고는 일반적인 클래스와 다르지 않다 내부 클래스는 사용 빈도가 높지 않으므로 내부 클래스의 기본 원리와 특징을 이해하는 정도까지만 학습해도 충분하다 내부 클래스란? 클래스 내에 선언된 클래스 클래스 안에 다른 클래스를 선언하는 이유는 두 클래스의 관계가 긴밀하기 때문 내부 클래스를 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근 할 수 있고 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다(캡슐화)는 장점이 있다 class A { ... class B { //내부 클래스 } ... } 이 때, 내부 클래스인 B는 클래스 A를 제외하고는 다른 클래스에서 잘 사용되지 않는 것이어야 한다 내부클래스의 종류와 특징 인스턴스 클..
[Java] 인터페이스
·
Language/Java
인터페이스란 일종의 추상클래스 추상클래스처럼 추상메서드를 갖지만 일반 메서드 또는 멤버변수를 가질 수 없다 오직 추상메서드와 상수만을 가질 수 있음 그 자체만으로 사용되기 보단 다른 클래스를 작성하는데 도움을 주는 목정으로 작성 인터페이스 작성 키워드로 class 대신 interface를 사용함 또한 interface에서도 클래스와 같이 접근제어자로 public 또는 default를 사용할 수 있다 interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수목록); } 일반적인 클래스의 멤버들과 달리 인터페이스 멤버에는 다음과 같은 제약사항이 있다 모든 멤버변수는 public static final 이어야 하며, 이를 생략..
[Java] 객체지향 프로그래밍 - 다형성과 추상클래스
·
Language/Java
다형성(polymorphism) 다형성이란 객체지향에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미 자바에서는 한 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있도록 함 즉, 자식 클래스의 인스턴스를 부모 타입의 참조변수로 참조하는 것이 가능 Class Tv { boolean poser;//전원상태(on/off) int channel;//채널 void power() { power = !power; } void channelUp() { power = !power; } void channelDown() { power = !power; } } Class CaptionTV extends Tv { String text;//캡션을 보여주기 위한 문자열 void caption() { //...내용..
[Java] 객체지향 프로그래밍 - 제어자
·
Language/Java
제어자 제어자는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 접근 제어자 public protected default private 그 외 static final abstract native, transient, synchronized, volatile, strictfp 클래스나 멤버변수와 메서드에 주로 사용되며, 여러 제어자를 조합하여 사용하는 것이 가능 단, 한번에 네 가지 중 하나만 선택해서 사용가능 즉, 하나의 대상에 대해서 public과 private을 함께 사용할 수 없다 static - 클래스의, 공통적인 인스턴스 변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만, 클래스변수(static 멤버 변수)는 인스턴스에 관계없이 같은 값을 갖는다 ..
[Java] 객체지향 프로그래밍 - package와 import
·
Language/Java
패키지 패키지란 클래스의 묶음이다 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능 자신만의 패키지 체계를 유지함으로써 다른 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있다 클래스의 실제 이름에는 패키지명이 포함되어있다 ex) String 클래서의 실제 이름은 java.lang.String - java.lang 패키지에 속한 클래스라는 의미 클래스가 물리적으로 하나의 클래스파일(.clas) 인 것과 같이 패키지는 물리적으로 하나의 디렉토리 즉 어떤 패키지에 속한 클래스는 해당 디렉토리에 존재하는 클래스 파일(.class)이어야 ..
[Java] 객체지향 프로그래밍 - 오버라이딩(overriding)
·
Language/Java
오버라이딩이란? 부모 클래스로부터 상속받은 메서드의 내용을 변경하는 것 상속받은 메서드를 그대로 사용하기도 하지만, 자신에 맞게 변경해야하는 경우 오버라이딩 한다 class Point { int x; int y; string getLocatin(){ return "x :" + x + "y :" + y; } } class Point3D extends Point { int z; string getLocatin(){ return "x :" + x + "y :" + y + "z :" + z; } } 오버라이딩의 조건 오버라이딩은 메서드의 내용만을 새로 작성하는 것이므로 메서드의 선언부는 부모와 완전히 일치해야 한다 이름이 같아야 함 매개변수가 같아야 함 반환 타입이 같아야 함 다만 접근 제어자와 예외는 제한된 ..
[Java] 객체 지향 프로그래밍 - 상속
·
Language/Java
상속 1. 상속의 정의와 장점 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성 할 수 있음 코드를 공통적으로 관리할 수 있음 코드의 추가 및 변경이 용이함 코드의 재사용성을 높이고, 중복을 제거하여 생산성과 유지보수에 기여 상속은 구현하는 방법 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 extends와 함께 써주면 됨 class child extentd Parent { //... } 상속해주는 클래스는 '부모' 상속 받는 클래스를 '자식' 이라고 함 자식 클래스의 코드가 수정되어도 부모 클래스는 아무런 영향도 받지 않지만, 부모 클래스의 코드가 수정되면 자식 클래스는 자동적..