🖥️ javascript
// 명령형 방식으로 배열의 모든 요소 두 배로 만들기
const numbers = [1, 2, 3, 4, 5];
for(let i = 0; i < numbers.length; i++) {
numbers[i] = numbers[i] * 2;
}
🖥️ javascript
class BankAccount {
constructor(balance = 0) {
this.balance = balance;
}
deposit(amount) {
this.balance += amount;
}
withdraw(amount) {
if (amount <= this.balance) {
this.balance -= amount;
return true;
}
return false;
}
getBalance() {
return this.balance;
}
}
const account = new BankAccount(1000);
account.deposit(500);
account.withdraw(200);
🖥️ javascriptCopy// 선언적 방식으로 배열의 모든 요소 두 배로 만들기
const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(num => num * 2);
// SQL도 선언적 프로그래밍의 예시
// SELECT name, age FROM users WHERE age > 18;
🖥️ javascript
function calculateGrade(scores) {
let total = 0;
for(let i = 0; i < scores.length; i++) {
total += scores[i];
}
const average = total / scores.length;
if(average >= 90) return 'A';
if(average >= 80) return 'B';
if(average >= 70) return 'C';
return 'F';
}
const studentScores = [85, 92, 78, 88];
const grade = calculateGrade(studentScores);
🖥️ javascript
// DOM 이벤트 처리
document.getElementById('button').addEventListener('click', () => {
console.log('버튼이 클릭되었습니다');
});
// Node.js의 이벤트 처리
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
console.log('이벤트가 발생했습니다');
});
myEmitter.emit('event');
실제 애플리케이션에서는 이러한 패러다임들이 혼합되어 사용된다.
🖥️ javascript
// React에서 여러 패러다임의 혼합
class TodoApp extends React.Component {
// 객체지향적 특성
constructor(props) {
super(props);
this.state = { todos: [] };
}
// 이벤트 기반 프로그래밍
handleAddTodo = (event) => {
event.preventDefault();
const text = event.target.elements.todo.value;
// 함수형 프로그래밍 (불변성 유지)
this.setState(prevState => ({
todos: [...prevState.todos, { text, completed: false }]
}));
}
// 선언적 렌더링
render() {
return (
<div>
<form onSubmit={this.handleAddTodo}>
<input name="todo" />
<button type="submit">Add Todo</button>
</form>
{/* 선언적 리스트 렌더링 */}
<ul>
{this.state.todos.map(todo => (
<li>{todo.text}</li>
))}
</ul>
</div>
);
}
}
➡️ 각 패러다임은 특정 문제를 해결하는데 더 적합할 수 있으므로
상황에 따라 적절한 패러다임을 선택하거나 조합하여 사용하도록 한다.